" LM"扩展功能。线性模型

时间:2015-03-16 17:10:16

标签: r function model linear lm

我的线性模型几乎为0 Rsquare。我正在创建一个带有1个参数n的函数,它描述了要采取的功率转换。

如果n = 3模型变为:

y = x1 + x2 + x1^2 + x2^2 + x1^3 + x2^3

如何在模型中输入这些内容而无需一次又一次地写入?

1 个答案:

答案 0 :(得分:1)

您可以在公式中使用 poly 这个功能

set.seed(123)
dat <- data.frame(y=rnorm(10), x1=rnorm(10), x2=rnorm(10))
n <-3
fm <-lm(y ~ poly(x1, degree=n, raw=TRUE)+poly(x2, degree=n, raw=TRUE), data=dat)
summary(fm)
## Coefficients:
##                                   Estimate Std. Error t value Pr(>|t|)
## (Intercept)                        0.50796    0.81187   0.626    0.576
## poly(x1, degree = n, raw = TRUE)1 -0.54354    0.86195  -0.631    0.573
## poly(x1, degree = n, raw = TRUE)2 -0.66328    0.55169  -1.202    0.315
## poly(x1, degree = n, raw = TRUE)3  0.05989    0.35421   0.169    0.876
## poly(x2, degree = n, raw = TRUE)1  1.06890    1.00518   1.063    0.366
## poly(x2, degree = n, raw = TRUE)2  0.01655    0.76730   0.022    0.984
## poly(x2, degree = n, raw = TRUE)3 -1.18610    0.84214  -1.408    0.254

当然是x1和x2的最大度数, raw = TRUE 表示它等于x1 + I(x1^2) + ...,如果 raw = FALSE 多项式将是正交的。

请注意,系数名称末尾的数字表示相关多项式的次数。

PS:您可以使用poly(x1, x2, degree=n, raw=TRUE)来编写包含互动的类似公式。