2012-12-10 3 views
2

memisc 패키지의 mtable을 사용하여 몇 가지 회귀 분석 결과 (APSR 스타일)를 나란히 인쇄하는 데 성공했으나 같은 결과를 얻지 못했습니다. 명령은 MASS 패키지의 lrm()robustbase 패키지의 lmrob()에 해당하는 모델에서 작동합니다.강력한 회귀 분석을위한 회귀 테이블

위대한 작품 :

rlm0 <- rlm(sr ~ pop15 + pop75,    data = LifeCycleSavings) 
rlm1 <- rlm(sr ~     dpi + ddpi, data = LifeCycleSavings) 
rlm2 <- rlm(sr ~ pop15 + pop75 + dpi + ddpi, data = LifeCycleSavings) 

mtable123 <- mtable("Model 1"=rlm0, "Model 2"=rlm1, "Model 3"=rlm2) 

mtable() 명령 ("Error in UseMethod("getSummary"): no applicable method for 'getSummary' applied to an object of class "lmrob"")에 실패

: 제가 제안을 열고

lmrob0 <- lmrob(sr ~ pop15 + pop75,    data = LifeCycleSavings) 
lmrob1 <- lmrob(sr ~     dpi + ddpi, data = LifeCycleSavings) 
lmrob2 <- lmrob(sr ~ pop15 + pop75 + dpi + ddpi, data = LifeCycleSavings) 

mtable123 <- mtable("Model 1"=lmrob0, "Model 2"=lmrob1, "Model 3"=lmrob2) 

해요

lm0 <- lm(sr ~ pop15 + pop75,    data = LifeCycleSavings) 
lm1 <- lm(sr ~     dpi + ddpi, data = LifeCycleSavings) 
lm2 <- lm(sr ~ pop15 + pop75 + dpi + ddpi, data = LifeCycleSavings) 

mtable123 <- mtable("Model 1"=lm0,"Model 2"=lm1,"Model 3"=lm2) 

mtable() 명령 ("Error in qt(p, df, lower.tail, log.p): Non-numeric argument to mathematical function")에 실패 그건 mtable과 관련이 없지만 나는 일반 텍스트 또는 탭 구분 출력 (즉, LaTeX 제외)에 대한 oking.

답변

3

memisc 패키지 ?getSummary에있는 문서는 다른 모델 유형에 사용되는 mtable 기능을 확장 할 수있는 방법에 대해 설명합니다.

특히 getSummary에 대해 적절한 방법을 만든 다음 setSummaryTemplate을 사용하여 요약 템플릿을 만들어야합니다. 예를 들어, 다음과 같은 것이 작동합니다.

getSummary.rlm <- function(obj, alpha = 0.5,...){ 
    obj_summary <- summary(obj) 

    coefficients <- cbind(coef(obj_summary),dt(coefficients[,3],df = obj_summary$df)) 
    #You can add the CI code yourself, this is a placeholder: 
    coefficients <- cbind(coefficients,matrix(NA,nrow(coefficients),2)) 
    colnames(coefficients) <- c('est','se','stat','p','lwr','upr') 

    sumstat <- c(sigma = obj_summary$sigma,df = obj_summary$df[2],stddev = obj_summary$stddev) 

    return(list(coef = coefficients,sumstat = sumstat)) 
} 

setSummaryTemplate(rlm = c(sigma = "($sigma:#)",df = "($df:#)",stddev = "($stddev:#)")) 

mtable123 <- mtable("Model 1"=rlm0,"Model 2"=rlm1,"Model 3"=rlm2) 
mtable123 

Calls: 
Model 1: NULL 
Model 2: NULL 
Model 3: NULL 

======================================= 
      Model 1 Model 2 Model 3 
--------------------------------------- 
(Intercept) 28.528* 6.497** 28.945** 
      (7.535) (1.225) (7.602) 
pop15  -0.434**   -0.473** 
      (0.149)   (0.150) 
pop75  -1.595   -1.655 
      (1.059)   (1.120) 
dpi     0.001* -0.000 
         (0.001) (0.001) 
ddpi     0.462 0.385 
         (0.206) (0.203) 
--------------------------------------- 
sigma   3.739 4.383 3.523 
df   47.000 47.000 45.000 
stddev   3.998 4.098 3.931 
======================================= 
+0

와우 - 이것이 내가 필요한 것입니다! 코드를 보내 주셔서 감사합니다. 한 가지 질문 : 4 행은 "계수 <- cbind (coef (obj_summary), dt (coef (obj_summary) [, 3], df = obj_summary $ df))"여야합니다. –