当使用平方转换内联时(即在模型公式中使用〜参数^ 2)与我首先将参数转换为另一列并在模型中使用该列(即Parameter2 = Parameter ^ 2)相比,得出的结果不同然后在公式中使用〜Parameter2)
Worst.Perimeter2 = Worst.Perimeter^2
m0x_ <- glm(formula = Diagnosis ~ Worst.Perimeter2, family = binomial,
data = cancerdata)
summary(m0x_)
results:
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.090e+01 1.132e+00 -9.634 <2e-16 ***
Worst.Perimeter2 8.974e-04 9.792e-05 9.165 <2e-16 ***
m0x1_ <- glm(formula = Diagnosis ~ Worst.Perimeter^2, family = binomial,
data = cancerdata)
summary(m0x1_)
Results:
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -20.81003 2.22116 -9.369 <2e-16 ***
Worst.Perimeter 0.18931 0.02068 9.156 <2e-16 ***
我希望它们给出相同的系数结果,但显然不是这样。如何解释这些不同的结果?
答案 0 :(得分:2)
^
是公式运算符。您可以使用它来指定一个包含交互作用的公式,如下例所示:
# Formula `(a + b)^2` means `1 + a + b + a*b`
head(model.matrix(~ (mpg + wt)^2, data = mtcars))
#> (Intercept) mpg wt mpg:wt
#> Mazda RX4 1 21.0 2.620 55.020
#> Mazda RX4 Wag 1 21.0 2.875 60.375
#> Datsun 710 1 22.8 2.320 52.896
#> Hornet 4 Drive 1 21.4 3.215 68.801
#> Hornet Sportabout 1 18.7 3.440 64.328
#> Valiant 1 18.1 3.460 62.626
如果您希望将^
解释为算术运算符,请使用I
(AsIs)运算符,如以下示例所示:
head(model.matrix(~ I((mpg + wt)^2), data = mtcars))
#> (Intercept) I((mpg + wt)^2)
#> Mazda RX4 1 557.9044
#> Mazda RX4 Wag 1 570.0156
#> Datsun 710 1 631.0144
#> Hornet 4 Drive 1 605.8982
#> Hornet Sportabout 1 490.1796
#> Valiant 1 464.8336
由reprex package(v0.2.1)于2019-04-06创建