如何保存2次多项式线性模型的系数并在R中进行后期预测



我有5万个客户数据。我必须为每个客户拟合一个多元线性模型,并保存系数,而不是保存完整的模型。我想把这些系数与输入特征数据相乘,得到一个响应值。对于一个客户模型,

data <- data.table(x=c(6.831,20.34083,33.85067, 47.3605, 60.87033, 74.38017, 87.89),
y=c(0.2098555,0.1593422,0.1191542,0.08804057,0.06445684,0.0468659 
0.03390175))
model2 <- lm(y ~ poly(x, 2), data)
predict.lm(model2, data[,"x"])

我将使用这些数据拟合模型。在未来,我得到矩阵50k x 7,其中每一行代表模型的数据点,我必须使用各自客户的模型对每一行进行预测

首先要有一个可复制的示例:

y<-rnorm(20)
x<-matrix(rnorm(40),20,2)
model2<-lm(y~poly(x,2))
predict.lm(model2,as.data.frame(x))

当然,您可以将model2的系数保存在另一个变量中,然后更改它们,依此类推。predict.lm根据您的线性模型预测价值。因此,predict.lm的输入必须是模型和数据,而不仅仅是系数。如果您想更改模型2中的系数,可以使用model2$coefficients[]<-...进行更改。在这里,您可以更改模型的所有系数,并使用predict.lm 执行与上面相同的命令

Triss的答案是正确的,不过我也想留下几个字。首先显示几行数据。是的,你可以将系数保存在df中,稍后再使用,你只需在循环中使用以下命令:

coefs <- t(as.data.frame(coef(model2)))
res <- rbind(res,coefs)

为什么要乘以系数,输入特征是什么?系数将告诉你预测(解释(变量和响应变量之间的关系方向。例如,如果coeff>0,则意味着两个变量都会增加。确保您的模型仅使用重要的探索性变量构建,使用summary(model2)进行检查,否则预测和结论可能是错误的。然而,你们需要整个模型来做一些预测。predict.lm将使用给定的探索变量(员工绩效、年龄、性别、经验等(作为输入,为您提供您正在寻找的响应变量的值(例如员工的加薪金额(。您可以使用使用现有数据(针对一定数量的员工(构建的模型来实现这一点。这是一种机器学习。您使用一些数据(训练集(构建了一个模型,然后可以使用该模型来预测新数据(测试集(。