2016-06-25 6 views
2

2つの変数GYがあります。各変数には12の値があります。私は相関を計算し、rgと呼ばれる線形回帰モデルに適合させた。ここでは、このモデルを使用してGPという2番目の変数の新しい値を予測したいと考えています。それぞれのGP値に対応するYの値を取得したいと思います。 GPには5つの値があります。私は予測を行うと 私は次のエラーを取得する:?私はGPにモデルを適用するにはどうすればよい単純な線形回帰から予測しようとするとエラーが発生する

Warning message: 
'newdata' had 5 rows but variables found have 12 rows 

GPは12個の値を持っている必要がありますか?私はそうは思わない。これを行うにはpredict.lmにオプションがありますか?

G<-c(20,25,21,30,22,23,19,24,21,23,28,27) 
I<-c(229,235,230,242,231,233,226,232,230,232,238,236) 

#diagrama de dispersion 
qqplot(G,I) 

#regression 
rg<-lm(I ~ G) 
summary(rg) 
coef(rg[1]) 

#coeficiente de correlación 
cor(G,I) 
cp<-cor(G,I,method = c("pearson")) 
cs<-cor(G,I,method = c("spearman")) 


# newdata 
GP <- c(30,32,34,36,38) 

# predecir el valor de ingresos para estos valores 
X1<-data.frame(GP) 

Y_pred <- predict.lm(rg,X1) 

答えて

2

predict方法を使用するために、newdataデータフレームの名前は、式中の変数を一致させる必要があります。

G <- c(20,25,21,30,22,23,19,24,21,23,28,27) 
I <- c(229,235,230,242,231,233,226,232,230,232,238,236) 

パックデータフレームにデータ(名前は変数名から自動的に取得されます):それはむしろ、グローバルワークスペースから値を引っ張っよりもdata引数を使用するより良いプラクティスです。

dd <- data.frame(G,I) 
rg <- lm(I ~ G, data=dd) 

新データ:あなたは、変数(data.frame(GP))の名​​前を変更していない場合は、単一の変数pdata$GP、ないpdata$Gを含むものでデータフレームを得るだろうことを

GP <- c(30,32,34,36,38) 
pdata <- data.frame(G=GP) ## same name as in original model 

注意(それを試してみてくださいそして参照してください) - Rはという変数を見つけることができないと不平を言うでしょう。 Trouble using predict with linear model in R

(Y_pred <- predict(rg,pdata)) 
##  1  2  3  4  5 
## 240.9580 243.4903 246.0227 248.5550 251.0874 

関連(そうでないかもしれない正確重複が)(... predictは、変数の数が多いはるかに複雑な状況で使用できることに注意してください)。

+0

何か別のdata.frame(G = GP)とdata.frame(GP) 簡単に言うことができます.thanks –

+0

newdataの 'predict'への引数の列名は、 lmオブジェクトを作成します。 'data.frame(GP)'はそれをしません。 'data.frame(G = GP)'はそうです。 –

関連する問題