2017-07-03 9 views
1

独立したXの観測がない場合でも、従属変数Yの値がない場合にpredict.lmコマンドを使用して線形回帰から予測値を生成する方法を理解できません。代数的にはこれは問題ではありませんが、Rでそれを行う効率的な方法はわかりません。たとえば、この偽のデータフレームと回帰モデルを考えてみましょう。ソースデータフレームで予測を割り当てようとしましたが、Y値が1つもないために予測できません。エラーが発生します。predict.lm Yのデータが欠落して回帰した後

# Create a fake dataframe 
x <- c(1,2,3,4,5,6,7,8,9,10) 
y <- c(100,200,300,400,NA,600,700,800,900,100) 
df <- as.data.frame(cbind(x,y)) 

# Regress X and Y 
model<-lm(y~x+1) 
summary(model) 

# Attempt to generate predictions in source dataframe but am unable to. 
df$y_ip<-predict.lm(testy) 

Error in `$<-.data.frame`(`*tmp*`, y_ip, value = c(221............. 
    replacement has 9 rows, data has 10 

私は代数、df$y<-B0+ B1*df$xを使用して予測を生成、またはモデルdf$y<-((summary(model)$coefficients[1, 1]) + (summary(model)$coefficients[2, 1]*(df$x))の係数を呼び出すことにより、予測を生成することでこの問題を回避ました。しかし、私は現在、何百もの係数を持つ大きなデータモデルを扱っており、これらのメソッドはもはや実用的ではありません。私はpredict機能を使用してそれを行う方法を知りたいです。

ありがとうございました!

+0

予測の最初の引数; LMは、モデル自体ではなく、NEWDATAあります – agenis

+0

ヘルプファイル '?predict.lm'を探してみると、関数を実行するのに必要な引数と例が表示されます。 – Biranjan

+0

こんにちは@aronあなたの問題を解決する答えがあれば、それを他の人に見せてもらうように "accept"にしてください – agenis

答えて

2

あり、内蔵された機能がこのためにR(必ずしも必要ではないが明白な)に:それはna.actionです引数/ ?na.excludeが機能します。このオプションを設定すると、predict()(および同様の下流処理機能)が自動的に該当するスポットのNAの値を入力します。

df <- data.frame(x=1:10,y=100*(1:10)) 
df$y[5] <- NA 

フィットモデル::データの設定

デフォルトna.actionは、単に非完全な例を除去する、na.omitです。

mod1 <- lm(y~x+1,data=df) 
predict(mod1) 
## 1 2 3 4 6 7 8 9 10 
## 100 200 300 400 600 700 800 900 1000 

na.excludeは、予測ベクトルに(NAが充填された)嵌合前に、非完全なケースを除去し、その後それらを復元:

mod2 <- update(mod1,na.action=na.exclude) 
predict(mod2) 
## 1 2 3 4 5 6 7 8 9 10 
## 100 200 300 400 NA 600 700 800 900 1000 
+0

Thanks Ben!あなたのコードは間違いなく私のものよりも簡潔です –

1

実際には、predict.lm機能を正しく使用していません。 どちらの方法でも、新しいデータの有無にかかわらず、モデルそのものを最初の引数(model)として入力する必要があります。新しいデータがなければ、それだけであなたのためNA行を除いて、学習データに予測すると、あなたは最初のdata.frame収まるように、この回避策が必要になります。

df$y_ip[!is.na(df$y)] <- predict.lm(model) 

または明示的にいくつかの新しいデータを指定します。新しいxは、それが新しい予測で不足している行を記入しますトレーニングxより1つの行を持っているので:

df$y_ip <- predict.lm(model, newdata = df) 
関連する問題