3

lme4さまざまなサブセットのさまざまな結果で R で実行したい一連のモデルがあります (各モデルは Intention To Treat (ITT) および Per-Protocol (PP) サブセットで実行され、さまざまな結果があります)。 texreg()LaTeX テーブルを印刷して結果を比較し、ドキュメント内で適切に印刷するために使用しknitrます。

実行する微妙に異なるモデルがたくさんあるので、賢明なことは、モデルをワープtexreg()して関数に呼び出すことであると考えました。そのために、私は書いています...

pleasant.regression <- function(data       = proportion,
                                time.frame = "September 2013",
                                outcome    = "unscheduled",
                                family     = binomial,
                                caption    = "ITT and PP Linear Mixed Effects Model Coefficients and Standard Errors for \\emph{any} Unscheduled Visits in September 2013.",
                                label    = "logistic-unscheduled",
                                ...){
    ## Require packages 
    require(lme4)
    require(ResourceSelection)
    require(texreg)
    ## Set defaults for texreg tables, can be modified with additional arguments

    texreg.digits        <- 2
    texreg.table         <- TRUE
    texreg.caption.above <- TRUE
    texreg.booktabs      <- TRUE
    texreg.dcolumn       <- TRUE
    texreg.use.packages  <- FALSE
    texreg.float.pos     <- "!htpb"
    texreg.ci.force      <- TRUE
    texreg.ci.test       <- 0
    ## Parse the outcome into a formula with the desired mixed
    ## effects model
    .formula <- reformulate(response = outcome, termlabels = c("allocation", "gender", "age", "n.unscheduled.2012", "(1 | pracid)"))
    ## Logistic Regresion
    if(family == "binomial"){
        ## ITT
        itt.mixed <- lmer(.formula,
                          data   = subset(data,
                                          period == time.frame & age.include == TRUE),
                          family = family)
        ## PP
        pp.mixed <- lmer(.formula,
                         data   = subset(data,
                                         period == time.frame & age.include == TRUE & pp == 1),
                         family = family)
    }
    ## Negative Binomial
    else if(family == "negbin"){
        ## ITT
        itt.mixed <- glmer.nb(.formula,
                              data   = subset(data,
                                              period == time.frame & age.include == TRUE))
        ## PP
        pp.mixed <- glmer.nb(.formula,
                             data   = subset(data,
                                             period == time.frame & age.include == TRUE & pp == 1))
    }
    ## Save table comparing ITT to PP using texreg()
    results <- invisible(texreg(list(itt.mixed, pp.mixed), 
                                custom.model.names = c("ITT", "PP"),
                                custom.coef.names  = c("Intercept", "Allocation (Letter)", "Gender (Female)", "Age", "$N_{Unscheduled}$ September 2012"),
                                digits             = texreg.digits,
                                caption            = caption,
                                table              = texreg.table,
                                caption.above      = texreg.caption.above,
                                label              = label,
                                booktabs           = texreg.booktabs,
                                dcolumn            = texreg.dcolumn,
                                use.packages       = texreg.use.packages,
                                float.pos          = texreg.float.pos,
                                ci.force           = texreg.ci.force,
                                ci.test            = texreg.ci.test))
    return(results)
}

これを呼び出すと、 texreg() は関数内から結果を出力しますが、テーブルを出力用のオブジェクトとして返しません...

> my.results <- pleasant.regression(data       = proportion,
                               time.frame = "September 2013",
                               outcome    = "unscheduled",
                               family     = "binomial",
                               caption    = "ITT and PP Linear Mixed Effects Model Coefficients and Standard Errors for \\emph{any} Unscheduled Visits in September 2013.",
                               label    = "logistic-unscheduled") ## Not expecting any output
Computing profile confidence intervals ...
Confidence intervals not available for this model. Using naive p values instead.
Computing profile confidence intervals ...
Confidence intervals not available for this model. Using naive p values instead.

\begin{table}[!htpb]
\caption{ITT and PP Linear Mixed Effects Model Coefficients and Standard Errors for \emph{any} Unscheduled Visits in September 2013. \textbf{NB} P-values are not explicitly calculated in favour of 95\% confidence intervals}
\begin{center}
\begin{tabular}{l D{.}{.}{5.11}@{} D{.}{.}{5.11}@{} }
\toprule
                                    & \multicolumn{1}{c}{ITT} & \multicolumn{1}{c}{PP} \\
\midrule
Intercept                           & -0.73^{*}       & -0.71^{*}       \\
                                    & [-0.95;\ -0.51] & [-0.95;\ -0.47] \\
Allocation (Letter)                 & -0.11           & -0.12           \\
                                    & [-0.33;\ 0.12]  & [-0.36;\ 0.12]  \\
Gender (Female)                     & 0.06            & 0.06            \\
                                    & [-0.03;\ 0.15]  & [-0.03;\ 0.16]  \\
Age                                 & -0.01           & -0.01           \\
                                    & [-0.03;\ 0.00]  & [-0.03;\ 0.00]  \\
$N_{Unscheduled}$ September 2012    & 1.18^{*}        & 1.15^{*}        \\
                                    & [1.12;\ 1.25]   & [1.08;\ 1.22]   \\
\midrule
AIC                                 & 12828.97        & 11597.78        \\
BIC                                 & 12873.10        & 11641.29        \\
Log Likelihood                      & -6408.49        & -5792.89        \\
Deviance                            & 12816.97        & 11585.78        \\
Num. obs.                           & 11547           & 10415           \\
Number of Practices                 & 142             & 136             \\
Variance : Practice                 & 0.37            & 0.40            \\
Variance : Residual                 & 1.00            & 1.00            \\
\bottomrule
\multicolumn{3}{l}{\scriptsize{$^*$ 0 outside the confidence interval}}
\end{tabular}
\label{logistic-unscheduled}
\end{center}
\end{table}

> print(my.results) ## Would expect this to hold the above table and print it again
NULL

ここでStackOverflow スレッドに基づいてtexreg()呼び出しをラップしようとしたため、結果が出力されずに返されましたが、期待どおりに機能していないようです。invisible()

明らかな何かが欠けていると思いますが、それを解決することはできません。ポインタ/提案はありがたく受け取ります。

4

1 に答える 1