我正在使用glm将SAS PROC GENMOD模型转换为R。当我比较加性模型的输出时,估计值与处理匹配。但是,当我运行交互式模型时,估计值不匹配。 R和SAS之间的交互作用估计是相同的,但主要效果估计是不同的。
加性模型的SAS代码为:
proc genmod descending;
class Grazed CP;
model Parasitized = Grazed CP / dist=bin link=logit type1;
run;
加性模型的R代码为:
mod3 <- glm(Parasitized ~ Grazed + CP, family = binomial(link = logit), data = dick)
加性模型的SAS输出为:
Analysis Of Maximum Likelihood Parameter Estimates
Parameter DF Estimate SE Wald Chi-Square Pr > ChiSq
Intercept 1 -0.2976 0.2006 2.20 0.1379
Grazed N 1 0.0696 0.2374 0.09 0.7695
Grazed Y 0 0.0000 0.0000 . .
CP 2 1 0.2829 0.2355 1.44 0.2298
CP 25 0 0.0000 0.0000 . .
Scale 0 1.0000 0.0000
加性模型的R摘要输出为:
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.05486 0.19377 0.283 0.777
GrazedY -0.06956 0.23743 -0.293 0.770
CP25 -0.28289 0.23555 -1.201 0.230
现在我知道估算值之间的符号不同,但是我知道为什么它已经存在并且不关心它。
交互式模型的SAS代码为:
proc genmod descending;
class Grazed CP;
model Parasitized = Grazed CP Grazed*CP / dist=bin link=logit type1;
run;
交互式模型的R代码为:
mod4 <- glm(Parasitized ~ Grazed * CP, family = binomial(link = logit), data = dick)
SAS交互式模型的摘要输出为:
Analysis Of Maximum Likelihood Parameter Estimates
Parameter DF Estimate SE Wald Chi-Square Pr > ChiSq
Intercept 1 -0.3321 0.2281 2.12 0.1454
Grazed N 1 0.1337 0.3105 0.19 0.6668
Grazed Y 0 0.0000 0.0000 . .
CP 2 1 0.3766 0.3755 1.01 0.3159
CP 25 0 0.0000 0.0000 . .
Grazed*CP N 2 1 -0.1546 0.4821 0.10 0.7485
Grazed*CP N 25 0 0.0000 0.0000 . .
Grazed*CP Y 2 0 0.0000 0.0000 . .
Grazed*CP Y 25 0 0.0000 0.0000 . .
Scale 0 1.0000 0.0000
R交互式模型的摘要输出为:
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.02353 0.21695 0.108 0.914
GrazedY 0.02092 0.36878 0.057 0.955
CP25 -0.22198 0.30242 -0.734 0.463
GrazedY:CP25 -0.15460 0.48211 -0.321 0.748
我不知道如何解决这种情况。我唯一能想到的是SAS R对模型的评分不同,但是不确定如何更改代码以便输出匹配。
答案 0 :(得分:2)
如果您希望获得与SAS相同的估算值,则可以告诉R以相同的方式拟合对比度。
options(contrasts = c(unordered = "contr.SAS", ordered = "contr.poly"))
请注意,您适合的模型是相同的-它们只是以不同的方式进行参数化。
我将提供有关模型如何在功能上相同的更多信息,但是对于编程方面而言,SO则更多。如果您想了解有关如何以及为什么使用细节的详细信息,则最好阅读有关如何参数化线性模型的信息。 SAS和R给出明显不同的结果。
> lm.R <- lm(mpg ~ cyl*am, data = mtcars)
> getOption("contrasts")
unordered ordered
"contr.treatment" "contr.poly"
> options(contrasts = c(unordered = "contr.SAS", ordered = "contr.poly"))
> lm.SAS <- lm(mpg ~ cyl*am, data = mtcars)
> lm.R
Call:
lm(formula = mpg ~ cyl * am, data = mtcars)
Coefficients:
(Intercept) cyl6 cyl8 am1 cyl6:am1 cyl8:am1
22.900 -3.775 -7.850 5.175 -3.733 -4.825
> lm.SAS
Call:
lm(formula = mpg ~ cyl * am, data = mtcars)
Coefficients:
(Intercept) cyl4 cyl6 am0 cyl4:am0 cyl6:am0
15.400 12.675 5.167 -0.350 -4.825 -1.092
因此,我们可以看到两种拟合方式提供了“不同”的参数,但是如果我们要求进行预测,则它们最终是相同的。
> predict(lm.R)
Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive
20.56667 20.56667 28.07500 19.12500
Hornet Sportabout Valiant Duster 360 Merc 240D
15.05000 19.12500 15.05000 22.90000
Merc 230 Merc 280 Merc 280C Merc 450SE
22.90000 19.12500 19.12500 15.05000
Merc 450SL Merc 450SLC Cadillac Fleetwood Lincoln Continental
15.05000 15.05000 15.05000 15.05000
Chrysler Imperial Fiat 128 Honda Civic Toyota Corolla
15.05000 28.07500 28.07500 28.07500
Toyota Corona Dodge Challenger AMC Javelin Camaro Z28
22.90000 15.05000 15.05000 15.05000
Pontiac Firebird Fiat X1-9 Porsche 914-2 Lotus Europa
15.05000 28.07500 28.07500 28.07500
Ford Pantera L Ferrari Dino Maserati Bora Volvo 142E
15.40000 20.56667 15.40000 28.07500
> predict(lm.SAS)
Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive
20.56667 20.56667 28.07500 19.12500
Hornet Sportabout Valiant Duster 360 Merc 240D
15.05000 19.12500 15.05000 22.90000
Merc 230 Merc 280 Merc 280C Merc 450SE
22.90000 19.12500 19.12500 15.05000
Merc 450SL Merc 450SLC Cadillac Fleetwood Lincoln Continental
15.05000 15.05000 15.05000 15.05000
Chrysler Imperial Fiat 128 Honda Civic Toyota Corolla
15.05000 28.07500 28.07500 28.07500
Toyota Corona Dodge Challenger AMC Javelin Camaro Z28
22.90000 15.05000 15.05000 15.05000
Pontiac Firebird Fiat X1-9 Porsche 914-2 Lotus Europa
15.05000 28.07500 28.07500 28.07500
Ford Pantera L Ferrari Dino Maserati Bora Volvo 142E
15.40000 20.56667 15.40000 28.07500
是的,这是一个实际的线性模型,但是理论和推理也适用于glms。