有没有办法在Stata中报告(自举)模型结果而不使用方差-协方差矩阵?

有没有办法在Stata中报告(自举)模型结果而不使用方差-协方差矩阵?,stata,Stata,我已经在Stata中编写了一个程序来执行集群bootstrap-t过程,用于估计t统计量和参数置信区间。该计划的目标是使用t-检验,并创建对集群相关性具有鲁棒性的CI,即使对于少量集群也是如此。出于好奇,这是建立在集群bootstrap-t的基础上的,带有Cameron、Gelbach和Miller 2008中描述的渐进细化过程:基于bootstrap的集群错误推理改进 问题是,我想创建一个漂亮的回归表来为用户输出,类似于标准的Stata回归报告。但是,我不能使用通常的函数ereturn,因为我

我已经在Stata中编写了一个程序来执行集群bootstrap-t过程,用于估计t统计量和参数置信区间。该计划的目标是使用t-检验,并创建对集群相关性具有鲁棒性的CI,即使对于少量集群也是如此。出于好奇,这是建立在集群bootstrap-t的基础上的,带有Cameron、Gelbach和Miller 2008中描述的渐进细化过程:基于bootstrap的集群错误推理改进

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


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

通过编写一些代码,您的假设可以很容易地得到验证。这里有一个有趣的例子

program whatever, eclass 
    ereturn scalar answer = 42 
end
显示可以创建一个e-class程序,返回用户选择的e-class结果。它只不过是一种常见的惯例,返回一个方差-协方差矩阵在统计学上很有意义。这不是句法定义的一个重要部分

. whatever

. eret li

scalars:
         e(answer) =  42

请注意,ereturn不是一个Stata函数,而是一个命令。如果情况不是这样,Stata函数在这里也帮不了你。在Stata中,函数和命令是不相交的。当然,其他地方的术语往往不同

通过编写一些代码,您的假设可以很容易地得到验证。这里有一个有趣的例子

program whatever, eclass 
    ereturn scalar answer = 42 
end
显示可以创建一个e-class程序,返回用户选择的e-class结果。它只不过是一种常见的惯例,返回一个方差-协方差矩阵在统计学上很有意义。这不是句法定义的一个重要部分

. whatever

. eret li

scalars:
         e(answer) =  42

请注意,ereturn不是一个Stata函数,而是一个命令。如果情况不是这样,Stata函数在这里也帮不了你。在Stata中,函数和命令是不相交的。当然,其他地方的术语往往不同

补充@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
但请注意,这两种类型之间存在差异,至少应在阅读中加以澄清。选择相应的程序类型

现在再谈一点。你说

问题是我想创建一个好看的回归表 为用户输出,类似于什么标准Stata 回归报告。但是,我不能使用通常的函数 反过来

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

*----- 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文件。请参阅帮助viewsource

补充@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
但请注意,这两种类型之间存在差异,至少应在阅读中加以澄清。选择相应的程序类型

现在再谈一点。你说

问题是我想创建一个好看的回归表 为用户输出,类似于什么标准Stata 回归报告。但是,我不能使用通常的函数 反过来

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

*----- 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文件。请参阅帮助viewsource

我最后用来生成回归表输出的方法是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回归表非常相似。

我最终用于生成回归表输出的方法是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回归表非常相似。

感谢您澄清了命令和函数之间的差异以及e-class程序的功能。我知道我可以使用display显示结果,但不知道ereturn可以获得除典型参数向量和VCV之外的其他类型的结果。感谢您澄清命令和函数之间的差异,以及e-class程序的功能。我知道我可以使用display显示结果,但不知道除了典型的参数向量和VCV之外,ereturn还可以获得其他类型的结果。谢谢-看起来最好的选择是自己使用display命令构建一个表。我希望有一个类似于ereturn post的命令,允许我输入自己的t统计数据,等等。。。但这似乎并不存在。我只需要从头开始做我自己好看的桌子,也许还要复制其他程序!。谢谢-看起来最好的选择是自己使用display命令构建一个表。我希望有一个类似于ereturn post的命令,允许我输入自己的t统计数据,等等。。。但这似乎并不存在。我只需要从头开始做我自己好看的桌子,也许还要复制其他程序!。请注意,estout是一个用户编写的命令,必须单独安装:ssc install estout。您应该在命令的帮助文件中明确这一点。请注意,estout是用户编写的命令,必须单独安装:ssc install estout。您应该在命令的帮助文件中明确这一点。