有没有办法在Stata中报告(bootstrap)模型结果而没有方差 - 协方差矩阵?

时间:2015-02-03 00:24:42

标签: stata

我在Stata编写了一个程序来执行一个用于估计t统计量和参数置信区间的集群bootstrap-t程序。该计划的目标是使用t检验并创建对群集相关性具有鲁棒性的CI,即使对于少量群集也是如此。好奇的是,这是基于Cameron,Gelbach和Miller(2008)所述的“集群bootstrap-t渐近细化”程序构建的:“基于引导程序的改进,用于推理集群错误。”

问题是我想创建一个漂亮的回归表来为用户输出,类似于标准的Stata回归报告。但是,我不能使用通常的功能“ereturn”,因为我的程序基于引导t统计创建t统计和置信区间。据我了解“ereturn”函数,它需要一个参数向量和一个方差 - 协方差矩阵作为输入,然后计算标准误差,t统计量和95%CI本身。这意味着我不能简单地将我的t统计p值和95%CI输入到“ereturn”函数中。即使我计算自举标准错误以填补VCV中的差异,t统计和CI也是错误的。

Stata中是否有另一个函数可以将表返回给用户并可用于报告我的程序结果?我可以更改“ereturn”的代码并将其保存为另一个接受我的统计输出的程序吗?还是我坚持用简单的文本显示输出结果?

3 个答案:

答案 0 :(得分:2)

您可以通过编写一些代码轻松测试您的假设。这里的滑稽示例

program whatever, eclass 
    ereturn scalar answer = 42 
end

表明可以创建一个e-class程序,它返回一个人选择的e-class结果。它只是一个常见的约定(对于所有它有很大的统计意义)返回方差 - 协方差矩阵。这不是句法定义的重要部分。

. whatever

. eret li

scalars:
         e(answer) =  42

请注意,ereturn不是Stata函数,而是命令。如果事情不是这样,Stata功能也不能帮助你。在Stata中,函数和命令是不相交的。当然,术语在其他地方通常是不同的。

答案 1 :(得分:2)

补充@ Nick的答案。

应该已经很清楚,您可以编写程序,即 e-class r-class ,它们会产生类似的结果。取自他的代码:

*----- example programs -----

capture program drop whatever
program whatever, eclass 
    ereturn post
    ereturn scalar answer = 42 
end

capture program drop whatever2
program whatever2, rclass 
    return scalar answer = 42 
end

*----- use programs -----

whatever
ereturn list

whatever2
return list

但要注意这两种类型之间存在差异,应该澄清它们,至少是[U] 18.10 Saving results。相应地选择你的程序类型。

现在另一点。你说

  

问题是我想创建一个漂亮的回归表   输出给用户,类似于标准的Stata   回归报告。但是,我不能使用通常的功能   “ereturn”,

没有理由认为程序类会妨碍这样的表:

*----- example programs -----

// first program
capture program drop whatever
program whatever, eclass 
    ereturn post
    local ans = 42
    ereturn scalar answer = `ans' 

    // table
    di as smcl as txt                ///
        _col( 7) "Whatever {c |}"    ///
        _col(22) "Value"              

    di as smcl as txt "  {hline 13}{c +}{hline 62}"

    di as smcl as txt              ///
        _col( 8) "        {c |}"   ///
        _col(23) `ans'     
end

// second program
capture program drop whatever2
program whatever2, rclass 
    local ans = 42
    return scalar answer = `ans' 

    // table
    di as smcl as txt                ///
        _col( 6) "Whatever2 {c |}"   ///
        _col(22) "Value"              

    di as smcl as txt "  {hline 13}{c +}{hline 62}"

    di as smcl as txt              ///
        _col( 8) "        {c |}"   ///
        _col(23) `ans'      
end

*----- use programs -----

whatever
ereturn list

whatever2
return list

如果您想要一张表格,只需在程序定义中使用display(或di)即可。这些表中没有什么特别之处,但是他们应该明白这一点。

您可以查看StataCorp程序员和其他程序员/用户如何显示表格,查看他们编写的.ado文件。见help viewsource

答案 2 :(得分:0)

我最终用来制作回归表输出的方法是" estout"命令。 " estout"允许您在已经格式化的漂亮表格中显示矩阵,并使用一些相对简单的选项来更改其显示方式。我希望这有助于任何面临类似情况的人。

estout matrix(final, fmt(%10.0g %10.0g %10.0g %12.4f %10.0g %10.0g)), ///
style(smcl) title("Model Results") mlabels("", none) modelwidth(10 10 10 6 10 10)

使用已经包含系数,标准误差,t值,p值和95%CI矢量的已标记矩阵,此命令生成一个看起来非常类似于标准Stata回归表的表。 / p>