我正在使用lm
R 上的函数调整响应面。在输出中,使用fit[["fitted.values"]]
,报告的值与实际值一致。但是,当我使用为每个效果生成的系数 ( Intercept, x1, x1*x2
) 并进行手动计算时,呈现的值非常不一致。
该fitted.values
函数如何进行计算?
下面是部分代码和输出:
data = read.csv("data.csv", header = TRUE, sep = ";")
head(data)
fit <- lm(rend ~ poly(wis, enz, degree = 2), data = data)
summary(fit)
的输出head(data)
:
wis enz rend
1 10.00 3 68
2 10.25 3 66
3 10.50 3 64
4 10.75 3 62
5 11.00 3 61
6 11.25 3 60
的部分输出fit[["fitted.values"]]
:
1 2 3 4 5 6 7 8 9 10 11 12
67.02258 65.46832 64.01733 62.66962 61.42517 60.28399 59.24609 58.31146 57.48009 56.75200 56.12718 55.60564
13 14 15 16 17 18 19 20 21 22 23 24
55.18736 54.87235 54.66062 54.55215 54.54696 54.64504 54.84639 55.15101 55.55891 56.07007 56.68450 57.40221
总结系数:
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 66.23929 0.02293 2888.536 <2e-16 ***
poly(wis, enz, degree = 2)1.0 -24.26976 0.70940 -34.211 <2e-16 ***
poly(wis, enz, degree = 2)2.0 129.35949 0.70940 182.349 <2e-16 ***
poly(wis, enz, degree = 2)0.1 130.19258 0.70940 183.524 <2e-16 ***
poly(wis, enz, degree = 2)1.1 -701.60447 21.94572 -31.970 <2e-16 ***
poly(wis, enz, degree = 2)0.2 0.48360 0.70940 0.682 0.496
我所做的是如下应用这些系数,只考虑重要的系数:
rend = 66.24 - 24.26*wis + 129.36*wis^2 + 130.19*enz - 701.60*wis*enz
例如,使用 head(data) 输出的第一个值:
rend = 66.24 - 24.26*10 + 129.36*10^2 + 130.19*3 - 701.60*10*3
这导致 7897.79 与估计的fitted.values
67.02不同
我究竟做错了什么?