2017-05-05 7 views
1

다른 질문의 경우, 처음 20 회의 관측에서 시작하여 회귀 창을 한 번에 한 관측으로 늘려 전체를 다루기까지 Y에 대한 X의 회귀 회귀에 대한이 절차 샘플 제안 :이 잘 작동하지만, (21) 잔류가되도록 각 회귀 하나에 의해 잔류 하나를 추가 한 후 처음 20 개 관찰의 잔차를 얻을 수있는 방법이있다R의 회귀 회귀

X1 <- runif(50, 0, 1) 

X2 <- runif(50, 0, 10) 

Y <- runif(50, 0, 1) 

df <- data.frame(X1,X2,Y) 


rolling_lms <- lapply(seq(20,nrow(df)), function(x) lm(Y ~ X1+X2, data = df[1:x , ])) 

21 관측을 포함한 회귀 분석에서 나온 것, 22. 잔차는 22 관측과 같은 회귀에서 나온 것 등등?

+0

'lapply (rolling_lms 함수 (X) COEF (개요 (X)), "STD. 오류"])'일반적 – coffeinjunky

+0

, 그것은 STR '개체 보는 것이 도움이된다()'. 예를 들어, 많은 정보가'lm' 객체에 저장되고, 추가 정보는'summary'에 의해 계산됩니다. 저장되어있는 것을보고 그것을 액세스하는 방법을 이해하기 위해서, 나는 보통'str (object)'를 본다. – coffeinjunky

답변

1

다음은 문제의 해결 방법입니다.

set.seed(1) 
X1 <- runif(50, 0, 1) 
X2 <- runif(50, 0, 10) 
Y <- runif(50, 0, 1) 
df <- data.frame(X1,X2,Y) 
rolling_lms <- lapply(seq(20,nrow(df)), function(x) lm(Y ~ X1+X2, data = df[1:x , ])) 

resk <- function(k) if(k==1) rolling_lms[[k]]$residuals else tail(rolling_lms[[k]]$residuals,1) 
unlist(sapply(1:length(rolling_lms), resk)) 

############ 
      1   2   3   4   5   6 
0.051243613 -0.284725835 -0.209235819 0.677747763 0.085196300 -0.077111032 
      7   8   9   10   11   12 
-0.185700617 0.016194254 0.422214060 -0.067994796 0.265315143 0.130531648 
      13   14   15   16   17   18 
-0.083662353 -0.098826853 -0.298235953 -0.459746026 0.282954796 -0.281752756 
      19   20   21   22   23   24 
-0.037180134 0.152774597 0.576060893 -0.121303797 0.001336554 -0.357956306 
      25   26   27   28   29   30 
0.205847757 -0.111231524 -0.082662882 -0.291013740 -0.223480493 0.051223304 
      31   32   33   34   35   36 
0.082970698 -0.393398739 -0.428164426 0.122919273 0.457861478 0.148282532 
      37   38   39   40   41   42 
0.081855106 0.023024731 0.500627476 0.005097244 0.189354101 0.092481013 
      43   44   45   46   47   48 
-0.245542247 -0.217881519 0.234771342 -0.023343600 -0.328489644 0.242163946 
      49   50 
-0.358311100 0.373917319 
+0

좋아요! 그게 바로 제가 찾던 내용입니다. 덕분에 많은 도움을 받았습니다! – Julia