R biglm预测搜索因变量

时间:2012-05-08 22:16:35

标签: 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

当我尝试使用biglm对象'a'进行预测时会出现问题。

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

为什么predict函数正在寻找price /因变量?有什么建议吗?

编辑:

> 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

1 个答案:

答案 0 :(得分:7)

查找因变量的原因是predict方法使用stats包中的model.frame调用,该函数要求所有变量都出现在新数据中。这在model.frame帮助页面上显示,但没有解释其背后的动机。

您实际需要做的就是在新数据中创建一个与因变量同名的变量,然后用零(或任何非缺失值)填充它。所以如果你运行它应该可以工作:

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