【发布时间】:2021-02-06 23:54:37
【问题描述】:
我想快速提取回归模型对函数的拟合。
所以我想从:
# generate some random data
set.seed(123)
x <- rnorm(n = 100, mean = 10, sd = 4)
z <- rnorm(n = 100, mean = -8, sd = 3)
y <- 9 * x - 10 * x ^ 2 + 5 * z + 10 + rnorm(n = 100, 0, 30)
df <- data.frame(x,y)
plot(df$x,df$y)
model1 <- lm(formula = y ~ x + I(x^2) + z, data = df)
summary(model1)
到为我描述拟合值的model_function(x)。
当然,我可以通过以下方式手动完成:
model_function <- function(x, z, model) {
fit <- coefficients(model)["(Intercept)"] + coefficients(model)["x"]*x + coefficients(model)["I(x^2)"]*x^2 + coefficients(model)["z"]*z
return(fit)
}
fit <- model_function(df$x,df$z, model1)
我可以将其与实际拟合值进行比较,并且(存在一些舍入误差)完美运行。
all(round(as.numeric(model1$fitted.values),5) == round(fit,5))
但这当然不是一个通用的解决方案(例如更多变量等)。
所以要清楚: 是否有一种简单的方法可以将拟合值关系提取为与刚刚估计的系数的函数?
注意:我当然知道predict 以及从新数据生成拟合值的能力——但我真的在寻找那个底层函数。也许这可以通过predict 实现?
感谢您的帮助!
【问题讨论】:
-
可以查看
predict.lm
标签: r regression lm