我想知道如何执行以下操作:
a <- data.frame(num = 1:10, numsqr = (1:10)^2)
b <- data.frame(num = 11:14, numsqr = 0)
fit <- lm(numsqr ~ num, data = a)
b$numsqr <- predict(fit, b)
print(b)
num numsqr
1 11 121
2 12 144
3 13 169
4 14 196
现在我得到以下结果
print(b)
num numsqr
1 11 99
2 12 110
3 13 121
4 14 132
我怎样才能得到预期的结果?
答案 0 :(得分:3)
要获得公式中的平方变量,您可以使用I
或poly
(系数中仍为线性),否则它只适合y~ax + b。
fit <- lm(numsqr ~ I(num^2), data=a)
fit <- lm(numsqr ~ poly(num, 2), data=a) # different model, same predictions
predict(fit, newdata=b)
# 1 2 3 4
# 121 144 169 196
答案 1 :(得分:0)
如果您认为您不知道数据的关系 (在这种情况下,你知道y = x ^ 2),通过线性回归得到精确值是非常困难的
您可以尝试将响应变量转换为对数,以获得更好的分辨率以合并曲率