我有一些从下面显示的函数综合生成的数据。
fn <- function(w1,w2){
f= -(0.1 + 1.3*w1 + 0.4*w2 - 1.8*w1*w1 - 1.8*w2*w2)
return(f)
}
接下来我创建一个数据框,其值如下所示
x = data.frame(
yval = fn(seq(0.1,0.9,by=0.01),seq(1.1,0.3,by=-0.01)),
x1 = seq(0.1,0.9,by=0.01),
x2 = seq(1.1,0.3,by=-0.01)
)
我想看看我是否可以通过使用多项式拟合来重新创建 fn 中的多项式系数,我尝试如下所示
fit = lm(yval ~ x1 + x2 + I(x1^2) + I(x2^2),data=x)
coef(fit)
但是,当我运行上面的代码时,我得到以下
(Intercept) x1 x2 I(x1^2) I(x2^2)
2.012 -5.220 NA 3.600 NA
似乎从未“检测到”术语 x2。有人知道我做错了什么吗?我知道,如果我创建合成线性数据并尝试使用 lm 重新创建系数,我会相当准确地取回系数。提前致谢。