회귀를 맞추는 방법


9

측정 된 변수가 이산 양수 (수) 인 시계열 데이터가 있습니다. 시간이 지남에 따라 상승 추세가 있는지 테스트하고 싶습니다. 독립 변수 (x)는 0-500 범위에 있고 종속 변수 (y)는 0-8 범위에 있습니다.

나는 y = floor(a*x + b)보통 최소 제곱 (OLS)을 사용 하여 형태의 회귀를 피팅함으로써 이것에 대답한다고 생각했습니다 .

R (또는 Python)을 사용 하여이 작업을 어떻게 수행합니까? 기존 패키지가 있습니까, 아니면 자체 알고리즘을 작성하는 것이 더 낫습니까?

추신 : 나는 이것이 이상적인 기술이 아니라는 것을 알고 있지만 실제로 이해할 수있는 비교적 간단한 분석을해야합니다. 제 배경은 수학이 아닌 생물학입니다. 측정 변수의 오류 및 시간에 따른 측정의 독립성에 대한 가정을 위반한다는 것을 알고 있습니다.


5
이 형식의 회귀를 시도하는 것은 수학적으로 자연 스럽지만 그 뒤에는 통계적 실수가 있습니다. 오류 용어는 이제 예측 된 값과 크게 상관됩니다. 그것은 OLS 가정에 대한 매우 강한 위반입니다. 대신 Greg Snow의 답변에서 제안한 카운트 기반 기술을 사용하십시오. (실제로 생각과 영리함을 반영하기 때문에이 질문을 기꺼이지지했습니다. 여기에 질문 해 주셔서 감사합니다!)
whuber

답변:


11

에서 nls(비선형 최소 제곱) 함수를 사용하여 상태 모델에 맞출 수는 R있지만, 많은 가정을 위반하고 여전히 의미가 없을 것이라고 말했듯이 (예상 된 결과는 한 단계에서 무작위라고 말하고 있습니다. 부드럽게 증가하는 관계 주변의 정수 값이 아닌 함수).

카운트 데이터를 맞추는 가장 일반적인 방법은의 glm함수를 사용하여 포아송 회귀를 사용하는 것입니다 R. 도움말 페이지의 첫 번째 예는 포아송 회귀입니다. 통계에 익숙하지 않은 경우 통계 전문가와상의하여 확인하는 것이 가장 좋습니다 당신이 일을 올바르게하고 있다는 것을.

8의 값이 절대 최대 값 인 경우 (그것이 보았던 것뿐만 아니라 더 높은 카운트를 볼 수는 없음) 비례 배당 로지스틱 회귀를 고려할 수 있습니다. 패키지에이 작업을 수행 할 수있는 몇 가지 도구가 R있습니다. 이 작업을 수행하려면 통계 전문가가 참여해야합니다.


"예상 된 결과가 부드럽게 증가하는 관계 주변의 정수 값이 아니라 단계 함수에서 임의적이라고 말하고 있습니다. --- 그것은 제가 생각하지 않은 것입니다. 결국, 나는 glm에 의해 포아송 회귀 분석을 갔다. 그것은 완벽한 선택이 아니라 내가 필요한 것에 대해 "충분히 좋은"것입니다.
afaulconbridge

10

Greg의 제안이 가장 먼저 시도해야 할 것은 분명합니다. 상황.

그러나 제안 된 모델은 예를 들어 둥근 데이터를 관찰 할 때 발생할 수 있습니다 : iid 정상 오류 .

Yi=axi+b+ϵi,
ϵi

나는 이것이 할 수있는 일을 살펴 보는 것이 재미 있다고 생각합니다. 표준 정규 변수의 cdf를 표시 합니다. 만약 다음 익숙한 컴퓨터 표기법을 사용합니다.FϵN(0,σ2)

P(ax+b+ϵ=k)=F(kb+1axσ)F(kbaxσ)=pnorm(k+1axb,sd=σ)pnorm(kaxb,sd=σ),

데이터 포인트 관찰했습니다 . 로그 우도는 이것은 최소 제곱과 동일하지 않습니다. 수치 방법으로이를 최대화하려고 시도 할 수 있습니다. 다음은 R의 그림입니다.(xi,yi)

(a,b,σ)=ilog(F(yib+1axiσ)F(yibaxiσ)).
log_lik <- function(a,b,s,x,y)
  sum(log(pnorm(y+1-a*x-b, sd=s) - pnorm(y-a*x-b, sd=s)));

x <- 0:20
y <- floor(x+3+rnorm(length(x), sd=3))
plot(x,y, pch=19)
optim(c(1,1,1), function(p) -log_lik(p[1], p[2], p[3], x, y)) -> r
abline(r$par[2], r$par[1], lty=2, col="red")
t <- seq(0,20,by=0.01)
lines(t, floor( r$par[1]*t+r$par[2]), col="green")

lm(y~x) -> r1
abline(r1, lty=2, col="blue");

둥근 선형 모형

빨간색과 파란색에서 선 는이 가능성의 수치 최대화와 각각 최소 제곱으로 나타납니다. 초록색 계단은 최대 가능성에서 찾은 대해 입니다 . 이것은 최소 제곱을 사용하고 를 0.5 로 변환하여 대략 같은 결과를 얻을 수 있음을 나타냅니다. 또는 최소 제곱은 모델에 잘 맞습니다 여기서 는 가장 가까운 정수입니다. 둥근 데이터가 너무 자주 만나서 이것이 알려지고 광범위하게 연구되었다고 확신합니다 ...ax+bax+ba,bb

Yi=[axi+b+ϵi],
[x]=x+0.5

4
+1이 기법을 좋아하고 실제로 몇 년 전에 위험 분석 저널에 논문을 제출했습니다. (일부 위험 분석가는 구간 값 데이터에 상당히 관심이 있습니다.) 청중에게 "너무 수학적"인 것으로 거부되었습니다. . :-( 하나의 팁 :.. 수치 적 방법을 사용하는 경우, 그것은 항상 해결책을 시작 값을 공급 좋은에 좋은 아이디어의 수치 최적화와 함께, 그 값을 얻기 위해 원시 데이터에 OLS를 적용을 한 후 "폴란드어를"고려
whuber

예, 이것은 좋은 제안입니다. 사실, 나는 그것이 "작동"한다는 것을 강조하기 위해 원격 값을 선택하지만 실제로는 데이터에 따라 매우 평평한 지역에서 시작하는 것을 피하는 유일한 해결책이 될 것입니다 ...
Elvis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.