计算多项式的拟合值。是否需要求和?如何使通用?

时间:2019-07-22 19:38:04

标签: r sum

我想手动计算多项式的拟合值。

# 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()函数),但我也想能够使用求和函数,该函数将通过当多项式的幂增加时再增加一项。

最终,我想遍历不同的幂多项式,而不必每次都调整上述等式来确定“拟合”。

enter image description here

1 个答案:

答案 0 :(得分:0)

只需使用矩阵乘法规则。
如果您对具有截距的模型(这是问题的大小)进行拟合,则追加一列,然后相乘。
矩阵乘法的结果是一个矩阵,因此我强制转换为向量,以便比较两个结果。
请注意,建议使用提取器功能coef

fit2 <- cbind(1, poly(x, 5, raw=TRUE)) %*% coef(f)
identical(fit, as.vector(fit2))
#[1] TRUE