代码之家  ›  专栏  ›  技术社区  ›  Andy Carlson

在Stargazer中显示Akaike标准

  •  7
  • Andy Carlson  · 技术社区  · 8 年前

    我有两个线性模型 lm 我想将其与 stargazer 包裹在很大程度上,我喜欢我得到的结果。但是Akaike信息标准没有显示出来。 The docs 说我可以通过 "aic" keep.stat 包含它的参数。但它不在那里。没有错误消息。

    stargazer(model1, model2, type="text", report="vc", header=FALSE,
              title="Linear Models Predicting Forest Land",
              keep.stat=c("aic", "rsq", "n"), omit.table.layout="n")
    
    Linear Models Predicting Forest Land
    ==========================================
                          Dependent variable: 
                          --------------------
                                 forest       
                             (1)        (2)   
    ------------------------------------------
    log.MS.MIL.XPND.GD.ZS  -11.948    -12.557 
    
    log.TX.VAL.AGRI.ZS.UN   2.310      2.299  
    
    log.NY.GDP.MKTP.CD                 0.505  
    
    Constant                40.857    28.365  
    
    ------------------------------------------
    Observations             183        183   
    R2                      0.142      0.146  
    ==========================================
    

    我看不出有什么理由不包括在内。呼叫全球 AIC 这些模型上的函数运行良好。

    > AIC(model1)
    [1] 1586.17
    > AIC(model2)
    [1] 1587.208
    
    1 回复  |  直到 8 年前
        1
  •  9
  •   Marco Sandri    8 年前

    问题由 .AIC stargazer:::.stargazer.wrap .
    可以看出,此函数不计算AIC lm 模型:

    .AIC <- function(object.name) {
        model.name <- .get.model.name(object.name)
        if (model.name %in% c("coeftest")) {
            return(NA)
        }
        if (model.name %in% c("lmer", "lme", "nlme", "glmer", 
            "nlmer", "ergm", "gls", "Gls", "lagsarlm", "errorsarlm", 
            "", "Arima")) {
            return(as.vector(AIC(object.name)))
        }
        if (model.name %in% c("censReg")) {
            return(as.vector(AIC(object.name)[1]))
        }
        if (model.name %in% c("fGARCH")) {
            return(object.name@fit$ics["AIC"])
        }
        if (model.name %in% c("maBina")) {
            return(as.vector(object.name$w$aic))
        }
        if (model.name %in% c("arima")) {
            return(as.vector(object.name$aic))
        }
        else if (!is.null(.summary.object$aic)) {
            return(as.vector(.summary.object$aic))
        }
        else if (!is.null(object.name$AIC)) {
            return(as.vector(object.name$AIC))
        }
        return(NA)
    }
    

    这个 .get.model.name 中的函数 .AIC公司 电话 .model.identify . 如果组件 call 模型的 lm() 然后 .模型识别 退货 ls :

    if (object.name$call[1] == "lm()") { 
       return("ls")
    }
    

    解决方案1 :使用 add.lines .

    set.seed(12345)
    n <- 100
    df <- data.frame(y=rnorm(n), x1=rnorm(n), x2=rnorm(n))
    
    model1 <- lm(y ~ x1, data=df)
    model2 <- lm(y ~ x2, data=df)
    
    library(stargazer)
    stargazer(model1, model2, type="text", report="vc", header=FALSE,
              title="Linear Models Predicting Forest Land",
              keep.stat=c("rsq", "n"), omit.table.layout="n",
              add.lines=list(c("AIC", round(AIC(model1),1), round(AIC(model2),1))))
    

    输出为:

    Linear Models Predicting Forest Land
    =================================
                 Dependent variable: 
                 --------------------
                          y          
                    (1)        (2)   
    ---------------------------------
    x1             0.115             
    
    x2                       -0.052  
    
    Constant       0.240      0.243  
    
    ---------------------------------
    AIC            309.4      310.3  
    Observations    100        100   
    R2             0.011      0.002  
    =================================
    

    解决方案2 :添加组件 AIC 为对象建模。

    model1 <- lm(y ~ x1, data=df)
    model2 <- lm(y ~ x2, data=df)
    
    model1$AIC <- AIC(model1)
    model2$AIC <- AIC(model2)
    
    stargazer(model1, model2, type="text", report="vc", header=FALSE,
              title="Linear Models Predicting Forest Land",
              keep.stat=c("aic", "rsq", "n"), omit.table.layout="n")
    

    输出为

    Linear Models Predicting Forest Land
    ======================================
                      Dependent variable: 
                      --------------------
                               y          
                         (1)        (2)   
    --------------------------------------
    x1                  0.115             
    
    x2                            -0.052  
    
    Constant            0.240      0.243  
    
    --------------------------------------
    Observations         100        100   
    R2                  0.011      0.002  
    Akaike Inf. Crit.  309.413    310.318 
    ======================================