2016-06-25 60 views
2

我有兩個變量GY是相關的;每個變量有12個值。我計算相關性並擬合一個名爲rg的線性迴歸模型。現在我想用這個模型來預測稱爲GP的第二個變量的新值。我想獲得與每個GP值相對應的Y值。 GP有5個值。 當我做我得到以下錯誤預測:嘗試從簡單的線性迴歸預測時出錯

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

我怎樣才能將模型應用於GP,是否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) 

新的數據:

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

需要注意的是,如果你不重命名變量(data.frame(GP)),你會得到一個數據幀的單變量pdata$GP,不含pdata$G一個(試試吧並看到) - 那麼R會抱怨說它找不到G變量。 (請注意,predict可以在更復雜的情況下也有大量的變量使用...)

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

相關(雖然也許不是確切式兩份):Trouble using predict with linear model in R

+0

有什麼不同data.frame(G = GP)和data.frame(GP) 您能簡單說一下嗎?感謝 –

+0

'predict'的newdata參數的列名需要與公式中使用的RHS名稱匹配製作lm對象。 'data.frame(GP)'不這樣做; 'data.frame(G = GP)'。 –