楼主: Captain-CUI
12497 3

[一般统计问题] 关于xtsum命令的一些疑问 [推广有奖]

学术权威

84%

还不是VIP/贵宾

-

TA的文库  其他...

Stata小问题

Shibor

威望
6
论坛币
551196 个
通用积分
26051.2321
学术水平
2623 点
热心指数
2893 点
信用等级
2428 点
经验
343140 点
帖子
5792
精华
19
在线时间
2308 小时
注册时间
2014-10-6
最后登录
2023-11-28

初级学术勋章 中级热心勋章 初级热心勋章 中级学术勋章 高级学术勋章 高级热心勋章 初级信用勋章 中级信用勋章 特级热心勋章 高级信用勋章 特级学术勋章

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
以下是运行xtsum命令以后的结果

QQ截图20160229160035.png

问题如下:
1.  我可以算出组间(between)的的最大最小值,可是组内(within)的最大最小值是如何计算出来的?
2.  我按照个体分组自己手动计算了组内方差和组间方差(用的是统计学里的公式),结果和软件计算的并不一致,而且这里的(组内方差+组间方差)并不等于总方差,这是为什么呢?

附上该结果对应的数据集,该数据集只是演示目的,其中state和year分别是panel和time变量。还请大神指点一下!
工作簿1.xlsx (9.56 KB)

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:xtsum Sum Tsu Between within between within 统计学 而且 如何

回帖推荐

statax 发表于2楼  查看完整内容

这个我也不清楚,以下是xtsum命令的代码,有空了分析一下吧: *! version 1.1.2 21sep2010 program xtsum, rclass byable(recall) sort version 6, missing syntax [varlist(ts)] [, I(varname)] _xt, i(`i') local ivar `r(ivar)' local tvar `r(tvar)' tempname N n Tbar mean sdo min max sdb sdw minb maxb minw maxw tempvar touse tu bv wv Ti mark `touse' `if' `in' di in smcl in gr _n "Va ...

本帖被以下文库推荐

沙发
statax 发表于 2016-2-29 17:16:43 |只看作者 |坛友微信交流群
这个我也不清楚,以下是xtsum命令的代码,有空了分析一下吧:

*! version 1.1.2  21sep2010
program xtsum, rclass byable(recall) sort
        version 6, missing
        syntax [varlist(ts)] [if] [in] [, I(varname)]
        _xt, i(`i')
        local ivar `r(ivar)'
        local tvar `r(tvar)'

        tempname N n Tbar mean sdo min max sdb sdw minb maxb minw maxw
        tempvar touse tu bv wv Ti
        mark `touse' `if' `in'

        di in smcl in gr _n "Variable" _skip(9) "{c |}" _skip(6) /*
        */ "Mean   Std. Dev.       Min        Max {c |}    Observations" /*
        */ _n "{hline 17}{c +}{hline 44}{c +}{hline 16}"

        sort `ivar' `tvar'
        tokenize `varlist'
        while "`1'"!="" {
                quietly {
                cap confirm string variable `1'
                local bstr = !c(rc)
                if `bstr' {
                        local bstr = 1
                        scalar `N'     = 0
                        scalar `n'     = 0
                        scalar `Tbar'  = .
                        scalar `mean'  = .
                        scalar `sdo'   = .
                        scalar `min'   = .
                        scalar `max'   = .
                        scalar `sdb'  = .
                        scalar `minb' = .
                        scalar `maxb' = .
                        scalar `sdw'  = .
                        scalar `minw' = .
                        scalar `maxw' = .
                        local wrd "    T"
                }
                else {
                        gen byte `tu' = `touse' & `1'<.
                        summ `1' if `tu'
                        scalar `N' = r(N)
                        scalar `mean' = r(mean)
                        scalar `sdo'  = cond(`N'>1,sqrt(r(Var)),.)
                        scalar `min'  = r(min)
                        scalar `max'  = r(max)
                        by `ivar': gen double `Ti' = /*
                                */ cond(_n==_N,sum(cond(`tu',1,0)),.)
                        by `ivar': gen double `bv'= cond(_n==_N, /*
                                */ sum(cond(`tu',`1',0)) / `Ti', . )
                        summ `Ti' if `tu'
                        * scalar `Tbar' = cond(r(mean)>=.,0,r(mean))
                        if r(min)==r(max) {        /* min == max */
                                local wrd "    T"
                        }
                        else        local wrd "T-bar"
                        drop `Ti'
                        by `ivar': gen double `wv' = /*
                                */ cond(`tu',`1'-`bv'[_N], .) /* + `mean' */
                }
                } /* quietly */
                #delimit ;
                di in smcl in gr /*
                        */ abbrev("`1'",8) _col(10) "overall {c |} " in ye
                        %9.0g `mean' "  "
                        %9.0g `sdo' "  "
                        %9.0g `min' "  "
                        %9.0g `max' in gr " {c |}"
                        _col(69) "N =" %8.0f `N' ;
                #delimit cr
                if !`bstr' {
                        qui summ `bv'
                        scalar `n' = r(N)
                        scalar `sdb' = cond(`n'>1,sqrt(r(Var)),.)
                        scalar `minb' = r(min)
                        scalar `maxb' = r(max)
                }
                #delimit ;
                di in smcl in gr _col(10) "between {c |}" _col(31) in ye
                        %9.0g `sdb' "  "
                        %9.0g `minb' "  "
                        %9.0g `maxb' in gr " {c |}"
                        _col(69) "n =" %8.0f `n' ;
                #delimit cr
                if !`bstr' {
                        qui summ `wv'
                        scalar `sdw' = cond(r(N)>1,sqrt(r(Var)),.)
                        scalar `minw' = r(min) + `mean'
                        scalar `maxw' = r(max) + `mean'
                        scalar `Tbar' = `N'/`n'
                }
                #delimit ;
                di in smcl in gr _col(10) "within  {c |}" _col(31) in ye
                        %9.0g `sdw' "  "
                        %9.0g `minw' "  "
                        %9.0g `maxw' in gr
                        " {c |} `wrd' =" %8.0g `Tbar' ;
                #delimit cr
                if !`bstr' {
                        drop `wv' `bv' `tu'
                }
                ret scalar N     = `N'
                ret scalar n     = `n'
                ret scalar Tbar  = `Tbar'
                ret scalar mean  = `mean'
                ret scalar sd    = `sdo'
                ret scalar min   = `min'
                ret scalar max   = `max'
                ret scalar sd_b  = `sdb'
                ret scalar min_b = `minb'
                ret scalar max_b = `maxb'
                ret scalar sd_w  = `sdw'
                ret scalar min_w = `minw'
                ret scalar max_w = `maxw'

                * double saves
                scalar S_1 = `N'
                scalar S_2 = `n'
                scalar S_3 = `Tbar'
                scalar S_4 = `mean'
                scalar S_5 = `sdo'
                scalar S_6 = `min'
                scalar S_7 = `max'
                scalar S_8 = `sdb'
                scalar S_9 = `minb'
                scalar S_10= `maxb'
                scalar S_11 = `sdw'
                scalar S_12 = `minw'
                scalar S_13 = `maxw'

                mac shift
                if "`1'"!="" {
                        di in smcl in gr _col(18) "{c |}" _col(63) "{c |}"
                }
        }
end
exit
. sum cost avgcost dcost

Variable         |      Mean   Std. Dev.       Min        Max |    Observations
-----------------+--------------------------------------------+----------------
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
longlong overall | 123456789  123456789      3.154     191.56 |     N =12345678
longlong overall |  44.44588   46.30909      3.154     191.56 |     N =12345678
         between |             44.57574     4.4645    125.584 |     n =      22
         within  |             20.41346  123456789  912345678 | T-bar =       6
已有 1 人评分经验 学术水平 热心指数 信用等级 收起 理由
Captain-CUI + 100 + 5 + 5 + 5 热心帮助其他会员

总评分: 经验 + 100  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

使用道具

藤椅
Captain-CUI 学生认证  发表于 2016-2-29 17:20:52 |只看作者 |坛友微信交流群
可以解释一下组内最大值、最小值是如何计算的吗???

使用道具

板凳
statsman 发表于 2018-1-2 17:20:20 |只看作者 |坛友微信交流群
先计算Y=x(i,t)-mean(x(i))+mean(x(i,t)),再sum Y,就是within那行的结果

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-11 12:25