互动模型而非累加模型的R中的glm输出与SAS中的proc genmod输出之间的差异

时间:2018-10-08 22:54:53

标签: r sas glm

我正在使用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对模型的评分不同,但是不确定如何更改代码以便输出匹配。

1 个答案:

答案 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。