繁体   English   中英

具有R的两个变量的多项式回归

[英]Polynomial regression with two variables with R

我正在尝试使用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实现这种回归的正确方法是什么?

带有样本数据

dd<-data.frame(x1=rnorm(50),
   x2=rnorm(50))
dd<-transform(dd, z = 2*x1-.5*x1*x2 + 3*x2^2+x1^2 + rnorm(50))

我们看到了

lm(z~polym(x1,x2,degree=3, raw=T), dd)
lm(z~x1+I(x1^2)+I(x1^3)+I(x2)+I(x1*x2) + 
   I(x1^2*x2)+I(x2^2) + I(x1*x2^2) + I(x2^3), dd)

是相同的。

请注意,在您的扩展中,您有如下术语

I(V4^3 * V5) + I(V4^2 * V5^2)

它们都是4级项(指数之和为4),因此它们不应出现在3级多项式中。 因此,这取决于您想要什么。 通常,对于三次多项式,

sum[i=0->3] sum[j=0->3-i] Ci,j . (V4_k)^i . (V5_k)^j

因此, i+j<=3总是i+j<=3 我不清楚您想要哪种类型的回归。

polym(V4,V5)调用没有提供您所想的。 (在此示例中使用poly还是polym都没有关系)

让我们看一个例子:

v1 <- 1:10; v2 <- 1:10
poly(v1, v2, degree=3, raw=TRUE)
      1.0 2.0  3.0 0.1 1.1  2.1 0.2  1.2  0.3
 [1,]   1   1    1   1   1    1   1    1    1
 [2,]   2   4    8   2   4    8   4    8    8
 [3,]   3   9   27   3   9   27   9   27   27
 [4,]   4  16   64   4  16   64  16   64   64
 [5,]   5  25  125   5  25  125  25  125  125
 [6,]   6  36  216   6  36  216  36  216  216
 [7,]   7  49  343   7  49  343  49  343  343
 [8,]   8  64  512   8  64  512  64  512  512
 [9,]   9  81  729   9  81  729  81  729  729
[10,]  10 100 1000  10 100 1000 100 1000 1000

列标签告诉您作为参数给出的第一和第二向量的程度。 前三个来自V2 ^ 0,第二三个来自V2线性,依此类推。

没错,但是您的第二个示例中包含4级学位。 如果您实际上正在寻找4度项,只需在方法调用中将度更改为4。

如果您需要更多有关多项式回归的帮助,R-Bloggers上的本文应该会有所帮助。 它显示了如何同时使用I()poly创建模型,尽管我认为它们只是单变量的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM