我想手动计算多项式的拟合值。
# Here is an example for poly(5):
x <- runif(n = 50, min = 1, max = 10)
y <- runif(n = 50, min = 10, max = 20)
f <- lm(y ~ poly(x, 5, raw=TRUE), na.action=na.exclude)
fit <- f$coeff[1] + f$coeff[2]*x + f$coeff[3]*x^2 + f$coeff[4]*x^3 +
f$coeff[5]*x^4 +
f$coeff[6]*x^5
我想手动计算“拟合”(不使用我知道可以使用的predict()函数),但我也想能够使用求和函数,该函数将通过当多项式的幂增加时再增加一项。
最终,我想遍历不同的幂多项式,而不必每次都调整上述等式来确定“拟合”。
答案 0 :(得分:0)
只需使用矩阵乘法规则。
如果您对具有截距的模型(这是问题的大小)进行拟合,则追加一列,然后相乘。
矩阵乘法的结果是一个矩阵,因此我强制转换为向量,以便比较两个结果。
请注意,建议使用提取器功能coef
。
fit2 <- cbind(1, poly(x, 5, raw=TRUE)) %*% coef(f)
identical(fit, as.vector(fit2))
#[1] TRUE