Stata连享会 主页 || 视频 || 推文 || 知乎 || Bilibili 站
温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc
,ihelp
,rdbalance
,gitee
,installpkg
⛳ Stata 系列推文:
作者:屠西伟 (北京师范大学)
邮箱:txwbnu@163.com
目录
矩阵代数是多元统计分析的重要工具,Stata 不但提供了多元统计分析中所需的基本矩阵运算,如矩阵的加、积、逆、Cholesky 分解、Kronecker 内积等,还提供了一些高级运算,如特征根、特征向量、奇异值分解等。在执行完某些统计分析命令后,还提供了一些系统矩阵,如估计系数向量、估计系数的协方差矩阵等。Stata 9.0 以后版本完美地整合了执行矩阵计算的矩阵编程语言 Mata,可进行强大的矩阵运算 (廉启国,2015)。在此基础上,本文将对二维统计表存储为矩阵的相关命令进行介绍。
mtab2
是一个创建二维统计表并将结果 (频数和百分比) 存储在矩阵中的命令。
*命令安装
ssc install mtab2, replace
*命令语法
mtab2 varlist [if] [in] [, options ]
options Description
---------------------------------------------------------------------
nolabel display numeric codes rather than value labels
missing treat missing values like other values
row report relative frequency within its row of each cell
col report relative frequency within its column of each cell
---------------------------------------------------------------------
varlist
:表示变量名;nolabel
:显示数字代码而不是值标签;missing
:像对待其他值一样对待缺失值;row
:在二维表中显示其行中每个单元格的相对频率;col
:在二维表中显示其列内每个单元的相对频率。
在本文中,我们使用 Stata 软件自带的数据文件 nlsw88.dta。该数据包含了 1988 年采集的 2246 个美国妇女的资料,主要变量包括:小时工资 wage、每周工作时数 hours、种族 race、职业 occupation、年龄 age、是否大学毕业 collgrad、当前职业的工作年限 tenure、是否结婚 married、是否居住在南部地区 south、合计工作年限 ttl_exp 等变量。
其中,小时工资 wage、每周工作时数 hours、年龄 age、当前职业的工作年限 tenure、合计工作年限 ttl_exp 为连续型变量;种族 race 为类别变量 (1 代表白种人 white,2 代表黑种人 black,3 代表其他人种 other)、职业 occupation 为类别变量 (13 个职业类别);是否大学毕业 collgrad、是否结婚 married、是否居住在南部地区 south 为虚拟变量。
该数据变量的基本统计特征如下:
. sysuse "nlsw88.dta", clear //导入数据
. tabstat *,stat(mean sd min max) col(stat) f(%10.4f)
variable | mean sd min max
-------------+----------------------------------------
idcode | 2612.6545 1480.8638 1.0000 5159.0000
age | 39.1532 3.0600 34.0000 46.0000
race | 1.2827 0.4754 1.0000 3.0000
married | 0.6420 0.4795 0.0000 1.0000
never_marr~d | 0.1042 0.3056 0.0000 1.0000
grade | 13.0989 2.5212 0.0000 18.0000
collgrad | 0.2369 0.4253 0.0000 1.0000
south | 0.4194 0.4936 0.0000 1.0000
smsa | 0.7039 0.4566 0.0000 1.0000
c_city | 0.2916 0.4546 0.0000 1.0000
industry | 8.1895 3.0109 1.0000 12.0000
occupation | 4.6428 3.4089 1.0000 13.0000
union | 0.2455 0.4305 0.0000 1.0000
wage | 7.7669 5.7555 1.0050 40.7466
hours | 37.2181 10.5091 1.0000 80.0000
ttl_exp | 12.5350 4.6102 0.1154 28.8846
tenure | 5.9778 5.5103 0.0000 25.9167
------------------------------------------------------
接下来,利用 mtab2
命令对大学毕业和婚姻状态
. mtab2 collgrad married
| married
college graduate | single married | Total
-----------------+----------------------+----------
not college grad | 616 1,098 | 1,714
college grad | 188 344 | 532
-----------------+----------------------+----------
Total | 804 1,442 | 2,246
这里的 616 是指单身 (single) 且没有大学毕业 (not college grad) 的样本有 616 个,以此类推,大学毕业 (college grad) 且已婚的样本有 344 个,Total 是行或列的总和。例如,第 1 行没有大学毕业的总人数为 1,714,第 1 列单身总人数为 804。
我们获得两行两列的频数矩阵 F[2, 2],结果如下:
F[2,2]
c1 c2
r1 616 1098
r2 188 344
该矩阵汇报了没有大学毕业且单身 (616)、没有大学毕业已婚 (1098)、大学毕业单身 (188) 和大学毕业已婚 (344) 共 4 种状态下的频数分布。
同时得到行百分比矩阵 rowP[2, 2]:
rowP[2,2]
c1 c2
r1 35.939323 64.060677
r2 35.338346 64.661654
行百分比矩阵是以行总数为分母,各单元频数为分子计算得到。例如,35.939323 是由第 1 行第 1 列频数 616 与第一行总数 1714 之比得到 (结果以百分比形式呈现)。
列百分比矩阵如下 colP[2, 2]:
colP[2,2]
c1 c2
r1 76.616915 76.144244
r2 23.383085 23.855756
列百分比矩阵是以列总数为分母,各单元频数为分子计算得到。例如,76.616915 是由第 1 行第 1 列频数 616 与第一列总数 804 之比得到 (结果以百分比形式呈现)。
mtab2
除了提供以上结果外,还报告 Pearson 卡方检验和 Fisher 精确检验的
Pv[2,2]
Chi2Pvalue FisherPvalue
RoundedPva .8006 .836
ExactPva .80058623 .83600063
在介绍检验结果前,我们首先介绍一下 Pearson 卡方检验和 Fisher 精确检验的概念以及计算方法。
卡方检验是检验两个或者多个分类变量相关性的常用方法。卡方检验的基本思想是:首先假设
(1) 计算各单元格的期望值
其中 i 表示第 i 行,j 表示第 j 列,
(2) 大学毕业与婚姻数据的期望值与观测值
| married
college graduate | single married | Total
-----------------+----------------------+----------------------
not college grad | 616(613.5601) 1,098(1100.4399) | 1,714
college grad | 188(190.4399) 344(341.5601) | 532
-----------------+----------------------+----------------------
Total | 804 1,442 | 2,246
(3) 卡方统计量计算公式
其中
对于一个简单的卡方检验,自由度是 mtab2
命令提供的卡方检验
相比于卡方检验,此检验可以用在不满足卡方检验的分布要求的小的或者数据稀疏的数据集上。费希尔检验基于超几何分布,计算列联表中的分布或者比列联表中的分布更加极端的分布出现的精确概率,它不是渐进检验,因此不需要满足卡方检验中那些对稀疏性的要求 (Boslaugh, 2016)。
(1) 表格中的符号表示
以本文结果为例,两种检验方法的原假设
a b r1
c d r2
c1 c2 n
(2) 精确概率计算公式
其中,mtab2
提供了 Fisher 检验的
进一步,在介绍 rcolp2mat
、tab2mat
、tablemat
、tabstatmat
和 statmat
五种相关命令的基础上,我们简要对比本推文中涉及的 6 个命令。
*命令安装
cnssc install rcolp2mat, replace
*命令语法
rcolp2mat varname1 varname2 [if] [in] [weight] , matrix(matname) row
col [options]
options Description
-------------------------------------------------------------------------
required
matrix(matname) indicate name of matrix for saved results
row col create row or column percentages. Only one selection
allowed
optional
total add row with total % (cannot be used with detail)
detail add row and column Ns (cannot be used with total)
missing treat missing values like other values
-------------------------------------------------------------------------
matrix(matname)
:指定保存结果的矩阵名称;row col
:创建行或列百分比,只允许选择其中一个;total
:添加总百分比的行;detail
:添加行和列总数;missing
:像其他值一样对待缺失值。 *具体示例
. rcolp2mat collgrad married, matrix(A) row //得到行百分比矩阵 A[2,2]
A[2,2]
single married
not_college_grad .35939323 .64060677
college_grad .35338346 .64661654
. rcolp2mat collgrad married, matrix(B) col detail //得到列百分比矩阵B[3,3]
B[3,3]
single married Total N
not_college_grad .76616915 .76144244 1714
college_grad .23383085 .23855756 532
Total N 804 1442 2246
相比于 mtab2
,rcolp2mat
命令并未提供频数矩阵和变量相关性检验。
*命令安装
cnssc install tab2mat, replace
*命令语法
tab2mat varname [if] [in] [weight] , matrix(matname) [options]
options Description
---------------------------------------------------------------
required
matrix(matname) indicate name of matrix for saved results
optional
nomiss exclude missing values
nofreq exclude frequency column
noperc exclude percent column
total add row with total
----------------------------------------------------------------
nomiss
:排除缺失值;nofreq
:排除频数列;noperc
:排除百分比列;total
:添加总计行。. *具体示例
. tab2mat collgrad, matrix(C) //大学毕业和大学没毕业的样本频数和百分比矩阵 C[2, 2]
C[2,2]
Freq Percent
not college grad 1714 76.313446
college grad 532 23.686554
. tab2mat married, matrix(D) //单身和已婚样本的频数和百分比矩阵 D[2, 2]
D[2,2]
Freq Percent
single 804 35.796974
married 1442 64.203026
相比于 mtab2
和 rcolp2mat
,tab2mat
命令只能统计一个变量的频数分布和百分比矩阵,无法完成多个变量的同时分析。
*命令安装
cnssc install tablemat, replace
*命令语法
tablemat varlist [if] [in] [weight] , stat(varname)
[bygroup(varlist) clean(string) format(format)
name(string) output(file name) short trim(real)]
stat
:由 tabstat
计算,比如常见的均值、最大值和最小值等,但是一次只提供一个统计特征的描述;bygroup
:分组变量,可以指定两个以上变量,由逗号隔开;clean
:用户指定要删除的字符;format
:指定格式类型;name
:指定结果保存矩阵的名称 (默认为 M);output
:导出结果的选项;trim
:分配给值标签的长度;short
:将修整尺寸应用于所有标签。tablemat
是 tabstat
命令的扩展,通过使用 tabstat
提供的统计结果进而生成矩阵。
. *具体示例
. tablemat collgrad married, st(mean) f(%9.4f) name(E) //给出两变量均值统计特征
Final output:
All
collgrad 0.2369
married 0.6420
. tablemat collgrad married, st(mean) f(%9.4f) name(F) byg(south)
//根据是否住在南方 (south) 进一步细分
Final output:
All south_0 south_1
collgrad 0.2369 0.2408 0.2314
married 0.6420 0.6442 0.6391
相比于 mtab2
、 rcolp2mat
和 tab2mat
,tablemat
命令主要作用在于将变量的统计特征 (均值、中位数、最小值和最大值等) 生成矩阵,而非统计各单元的频数和频率,也不涉及变量间的相关性检验。
*命令安装
cnssc install tabstatmat, replace
*命令语法
tabstatmat matname [ , nototal safe ]
tabstatmat
将 tabstat
统计结果保存为矩阵格式,将这些矩阵组合起来,并将它们放在单个命名的矩阵 matname 中。如果 matname 已经存在,除非指定安全选项,否则它将被覆盖;否则,它将被覆盖。在这种情况下,将发出错误消息。. *具体示例
. *具体示例
. tabstat collgrad married, s(n mean sd min max) save col(stat)
variable | N mean sd min max
-------------+--------------------------------------------------
collgrad | 2246 .2368655 .4252538 0 1
married | 2246 .6420303 .4795099 0 1
----------------------------------------------------------------
. tabstatmat collgradstat, nototal //将上表转为矩阵形式 G[5, 2]
collgradstat[5,2]
collgrad married
N 2246 2246
mean .23686554 .64203028
sd .42525377 .47950993
min 0 0
max 1 1
tabstatmat
命令相较于 tablemat
而言,可以一次提供多个统计特征值的描述。
如果用户关心变量的行、列百分比矩阵,mtab2
、rcolp2mat
和 tab2mat
可以满足需要,若进一步想看变量间的相关性,建议使用 mtab2
命令。如果用户关心统计变量的基本特征,例如均值、标准差、最小值和最大值可以使用 tabstatmat
和 tablemat
命令。tabstatmat
命令相较于 tablemat
而言,可以一次提供多个统计特征值的结果。
下表具体展示了各个命令的主要功能,其中 √ 表示有此项功能, × 则表示没有此项功能。
mtab2 |
rcolp2mat |
tab2mat |
tablemat |
tabstatmat |
|
---|---|---|---|---|---|
频数矩阵 | √ | × | × | × | × |
行百分比矩阵 | √ | √ | √ | × | × |
列百分比矩阵 | √ | √ | √ | × | × |
相关性检验统计特征 | √ | × | × | × | × |
统计特征 | × | × | × | √ | √ |
Note:产生如下推文列表的 Stata 命令为:
lianxh 结果输出 毕业论文 因子变量
安装最新版lianxh
命令:
ssc install lianxh, replace
免费公开课
最新课程-直播课
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 | 文本分析、机器学习、效率专题、生存分析等 | |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
⛳ 课程主页
⛳ 课程主页
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会-常见问题解答:
✨ https://gitee.com/lianxh/Course/wikis
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh