r - 尝试从简单线性回归进行预测时出错

标签 r lm

我有两个变量GY相关的;每个变量有 12 个值。我计算相关性并拟合一个名为 rg 的线性回归模型。现在我想使用这个模型来预测第二个变量 GP 的新值。我想要Y与每个 GP 对应的值值(value)。 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 )

最佳答案

为了使用 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 变量。 (请注意,预测可用于存在大量变量的更复杂的情况...)

(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

关于r - 尝试从简单线性回归进行预测时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38033708/

相关文章:

r - lm() 函数;提取截距的统计显着性;存储在变量中

r - R中的约束线性回归系数

r - 为什么 name(x)<-y 和 "names<-"(x,y) 不等价?

python - 有条件地调用 R 中的特定列

r - 在控制流中使用 Next

python - 在 pandas DataFrame 上使用 Python 中的 R lm 函数

r - 获取每个分类变量的 lm 估计值

r - 使用 dplyr 在 R 中调用 prop.test 函数

r - 如何在 R 中将宽嵌套数据 reshape 为长格式?

r for 循环回归 lm(y~x)