r - 带 R 的两个变量的多项式回归

标签 r regression polynomials

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

最佳答案

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 即可。

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

关于r - 带 R 的两个变量的多项式回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25409373/

相关文章:

python - 使用根多项式回归的颜色检查器进行的颜色校准未提供正确的结果

java - 多项式导数处理指数为0

haskell - 求多项式的根

r - 基于用户选择的输入数量的条件面板

r - 使用 tryCatch 在函数内自定义错误消息

Highcharts - 获取交叉系列的交叉点

mysql - 线性回归,在 MySQL 中寻找斜率

r - 如何在 pandoc 的 Markdown (例如 Rmd)文档中翻译 `abstract` 的标题?

r - 从自定义目录加载R软件包

python - 带有掩蔽和直觉的 LSTM 回归问题 (keras)