内联平方转换给出与转换后的列值不同的结果
Inline square transformation giving different results than transformed column values
当使用内联方形变换(即在模型公式中使用 ~ Parameter^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 ***
我希望他们对系数给出相同的结果,但显然情况并非如此。我如何解释这些不同的结果?
^
是公式运算符。您可以使用它来指定包含交互的公式,如本例所示:
# 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 创建
当使用内联方形变换(即在模型公式中使用 ~ Parameter^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 ***
我希望他们对系数给出相同的结果,但显然情况并非如此。我如何解释这些不同的结果?
^
是公式运算符。您可以使用它来指定包含交互的公式,如本例所示:
# 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 创建