R转换回归模型以拟合函数

R转换回归模型以拟合函数,r,regression,lm,R,Regression,Lm,我想快速提取回归模型对函数的拟合 所以我想从: # 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

我想快速提取回归模型对函数的拟合

所以我想从:

# 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)
我可以将其与实际拟合值进行比较,并且(有一些舍入误差)效果非常好

all(round(as.numeric(model1$fitted.values),5) == round(fit,5))
但这当然不是一个通用的解决方案(例如,更多变量等)

因此,要明确的是: 有没有一种简单的方法可以将拟合值关系提取为与刚刚估计的系数的函数?

注意:我当然知道
predict
以及从新数据生成拟合值的能力,但我真的在寻找底层函数。也许这可以通过
预测


谢谢你的帮助

其中任何一项都给出了拟合值:

fitted(model1)

predict(model1)

model.matrix(model1) %*% coef(model1)

y - resid(model1)

X <- model.matrix(model1); X %*% qr.solve(X, y)

X <- cbind(1, x, x^2, z); X %*% qr.solve(X, y)

如果你想要一个实际的函数,你可以这样做:

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)

get\u func您可以查看
predict.lm
非常感谢,这正是我想要的!
cbind(1, x, x^2, z) %*% coef(model1)

predict(model1, list(x = x, z = z))