2012-05-08 2 views
2

biglm 패키지를 사용하여 데이터 세트를 회귀합니다. 나는 biglm 객체에 'a'를 사용하여 예측하려고 할 때R biglm이 종속 변수 검색을 예측합니다.

chunkStart <- seq(1,150000000,1000000) 
chunkEnd <- seq(1000000,151000000,1000000) 
ff <- price ~ factor(Var1) + factor(Var2) 

#for(i in 1:length(chunkStart)){ 
for(i in 1:5){ 

startRow <- chunkStart[i] 
endRow <- chunkEnd[i]  
curchunk <- data.frame(price=x[startRow:endRow,1] 
    ,Var1=factor(x[startRow:endRow,6], levels=1:3), Var2= factor(x[startRow:endRow,7], levels=1:3)) 

    if(i == 1){ 
    a <- biglm(ff,curchunk) 
    } 
    if(i != 1){ 
    a <- update(a,curchunk) 
    } 
rm(curchunk) 
gc() 
print(paste(i, " | ",startRow ," | ",endRow ," | ", sep="")) 
flush.console() 
} 

> summary(a) 
Large data regression model: biglm(ff, curchunk) 
Sample size = 5000000 
       Coef (95%  CI) SE p 
(Intercept) 0.0457 0.0454 0.0461 2e-04 0 
factor(Var1)2 0.0189 0.0184 0.0194 2e-04 0 
factor(Var1)3 0.0148 0.0142 0.0155 3e-04 0 
factor(Var2)2 -0.0331 -0.0335 -0.0326 2e-04 0 
factor(Var2)3 -0.0417 -0.0426 -0.0408 4e-04 0 

문제점이 와서 : 회귀 잘 다음 코드를 사용하여 실행됩니다.

> df1 <- data.frame(y[1:1000,]) 
> pred1 <- predict(a, df1) 
Error in eval(expr, envir, enclos) : object 'price' not found 

predict 기능은 price/종속 변수를 찾고? 어떤 제안?

EDIT

:이 종속 변수를 찾고 그 이유는 상기 방법을 예측할 수 있다는 것이다

> head(df1) 
    Var1 Var2 
1 3 3 
2 3 1 
3 3 2 
4 2 1 
5 2 2 
6 1 1 
> str(df1) 
'data.frame': 1000 obs. of 2 variables: 
$ Var1: Factor w/ 3 levels "1","2","3": 3 3 3 2 2 1 2 1 2 1 ... 
$ Var2: Factor w/ 3 levels "1","2","3": 3 1 2 1 2 1 1 1 2 1 ... 
> pred1 <- predict(a, df1) 
Error in eval(expr, envir, enclos) : object 'price' not found 
+0

y는 무엇입니까? 어디에도 정의되어 있지 않습니다. – Dason

+0

@Dason : ff <- price-factor (Var1) + factor (Var2) – screechOwl

+0

df1을 정의 할 때 "y"가 있지만 y는 무엇입니까? – Dason

답변

7

는 통계 패키지 model.frame로 전화를 사용하고,이 함수는 새에 존재하는 모든 변수를 필요 데이터. 이것은 model.frame 도움말 페이지에 그 이유에 대한 설명없이 표시되어 있습니다.

실제로 이것에 대해해야 할 일은 종속 변수와 이름이 같은 변수를 새 데이터에 작성한 다음 0 (또는 누락되지 않은 값)으로 채우는 것입니다. 따라서 이것을 실행하면 작동합니다 :

df1$price <- 0 
pred1 <- predict(a, df1) 
+0

그랬습니다. 고마워요! – screechOwl

+0

대단히 감사합니다 !! 이것이 제가 찾고있는 것입니다. –