2016-08-31 4 views
3

선형 회귀 함수 lm이 1 분 간격의 시계열에서 완전하게 작동하는지 궁금합니다. 나는 예, 그러나이 경우에는 겉으로보기에는 기대하지 않을 것이다. 나는 lm(z ~ index(z)) 적용 다음 XTS 시계열 zlm 함수가 1 분 xts 시계열

      mean 
    2016-03-11 08:37:00 10 
    2016-03-11 08:38:00 11 
    2016-03-11 08:39:00 12 

에게있어

Coefficients: 
(Intercept)  index(z) 
     11   NA 

그래서 회귀의 기울기가 NA입니다 제공했다. 왜 그런지 궁금해? 왜 계산할 수없는 수학적 이유는 보이지 않습니다.

나는 5 분 간격을 가지고있는 첫 번째 행의 시간을 변경, 그래서 zlm(z ~ index(z)) 작품이 예상대로 다음

     mean 
2016-03-11 08:33:00 10 
2016-03-11 08:38:00 11 
2016-03-11 08:39:00 12 

같고 4.839e-3

Coefficients: 
(Intercept)  index(z) 
-7.053e+06 4.839e-03 
의 기울기를 반환하는 경우

lm 기능이 어떻게 작동해야하는지에 대해 오해하니? 아니면 아무도이 동작에 대해 언급 할 수 있습니까? 1min 계열에 대한 기울기를 계산할 수있는 다른 함수가 있습니까?

+1

좋은 질문! 재현 할만한 예제가 있습니까? – nilsole

답변

3

이것은 xts 또는 lm 기능과 관련이 없습니다. 일반적으로 선형 회귀 계수를 추정 할 때 문제가됩니다. 효과적으로 변하지 않는 데이터 (부동 소수점 산정 정밀도 내)를 사용하여 데이터 계열의 변동을 추정 할 수는 없습니다.

lm(z ~ index(z), singular.ok=FALSE) 
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
    singular fit encountered 

을하지만 것 "작업"당신이 내성을 낮출 수 있지만, 경우에 그 희생 수치 안정성 :

당신은 당신의 첫 번째 예제는 계산 단수 것을 볼 수 있습니다.

lm(z ~ index(z), singular.ok=FALSE, tol=1e-8) 

Call: 
lm(formula = z ~ index(z), singular.ok = FALSE, tol = 1e-08) 

Coefficients: 
(Intercept)  index(z) 
-2.430e+07 1.667e-02 

두 번째 예제는 유사 콘텐츠를 충분히 만들었 기 때문에 작동합니다.

+0

내공을 낮춰 주셔서 감사합니다. 문제를 해결하고 저에게 잘 맞습니다. 이 점의 기울기를 알고 싶습니다.이 점은 다른 회귀 계산에서 나온 것이므로 충분히 중요합니다. 그러나 나는 수학적 배경에 대해서도 더 읽어야한다고 생각한다. – Mike

+0

Joshua는 인덱스를 미리 스케일링하여'tol'을 설정하는 것과 같은 결과를 얻었습니까? 예 : 'ix <- as.numeric (index (z)) * 10; lm (z ~ ix)'(보상을 위해 나중에'ix' 계수를 스케일합니다). –

+0

@DarrenCook : 예, 작동합니다. 이 문제가 많은 경우 선형 모델을 예측할 때 더 높은 정밀도를 지원하는 패키지를 사용하는 것이 좋습니다. 나는 아무 것도 모른다. 그러나 하나도 존재하지 않는다면 놀랄 것이다. –