2

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
4

1 に答える 1

7

従属変数を探す理由は、predict メソッドがmodel.framestats パッケージからの呼び出しを使用し、その関数がすべての変数が新しいデータに存在する必要があるためです。これは、model.frameその背後にある動機についての説明なしに、ヘルプ ページに示されています。

これについて実際に行う必要があるのは、従属変数と同じ名前を持つ新しいデータに変数を作成し、それをゼロ (または任意の非欠損値) で埋めることだけです。したがって、これを実行すると動作するはずです:

df1$price <- 0
pred1 <- predict(a, df1)
于 2012-05-08T23:57:09.890 に答える