【发布时间】:2014-08-20 16:00:08
【问题描述】:
我正在尝试用 R 做一些非常简单的事情,但我不确定我是否做得很好。我有一个包含三列 V1,V4,V5 的数据集,我想进行回归以获得以下两个变量多项式的系数 Ci,j:
sum[i=0->3] sum[j=0->i] Ci,j . (V4_k)^i . (V5_k)^(3-j)
所以我尝试使用函数 polym:
lm(V1 ~ polym(V4, V5, degree=3, raw = TRUE), data)
这给了我以下系数
[1] 1.048122e+04 -2.050453e+02 1.407736e+00 -3.309312e-03 -3.748650e+01 8.983050e-01 -4.308559e-03 1.834724e-01 -6.868446e-04 4.030224e-04
现在,如果我很好地理解了我们必须如何构建一个公式,我假设以下内容会给出相同的结果:
lm(v1 ~ V4 + V5 + I(V4 * V5) + I(V4^2 * V5) + I(V4^3 * V5) + I(V4^2 * V5^2) + I(V4^2*V5^3) + I(V4^3 * V5^2) + I(V4^3 * V5^3), data)
但我得到不同的系数:
[1] 3.130403e+03 -1.652007e+01 -1.592879e+02 3.984177e+00 -2.419069e-02 3.919910e-05 1.008657e-04 4.271893e-07 -5.305623e-07 -2.289836e-09
你能告诉我我做错了什么吗?用 R 实现这种回归的正确方法是什么?
【问题讨论】:
-
你检查过 poly() 中返回矩阵的顺序吗?它似乎返回 V4, V4^2, V4^3, V5, V5^2, V5^3,... 这与您的自定义方程式不同。此外,V4^3 * V5 是四阶多项式。
标签: r regression polynomials