我的线性模型几乎为0 Rsquare。我正在创建一个带有1个参数n
的函数,它描述了要采取的功率转换。
如果n = 3
模型变为:
y = x1 + x2 + x1^2 + x2^2 + x1^3 + x2^3
如何在模型中输入这些内容而无需一次又一次地写入?
答案 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)
来编写包含互动的类似公式。