1、Stata入门---基础统计和作图

第一天学习Stata软件做数据分析
利用系统自带的数据熟悉常用的命令

1、导入数据

sysuse auto.dta
导入系统自带数据库auto.dta
打开第一个源文件water1.dta,将它按year排序,然后再另存为文件(再以覆盖方式保存)
use bloomberg-1.dta, replace 
sort year
save bloomberg-2.dta, replace
1.1查看数据(字段类型为数值,字符串不行)的数量、平均数、标准差、最小值、最大值
summarize [varlist][if][in][,options]   //字段描述
summarize price     //描述价格这个字段
sum price   //简写的命令也可以被识别price是字段
变量的简述,有数量、均值、标准差
1.2描述变量(字段)类型、格式、标签
describe [varlist]     // 字段描述
describe, short   
描述变量(字段)类型、格式、标签

描述两个字段
count if price > 5000
统计观测值数量
isid varlist   //检查是否为识别标签,类似于数据库的主键
isid price    //该字段是唯一值,不会报错
isid mpg    //不是唯一值,会报错
测试isid price,所有值均不同,不报错
unique  var  //需要安装,用命令 ssc install unique
安装unique命令

测试unique
1.3tabstat
sysuse "nlsw88.dta", clear
\\\一维表形式如下:
tabstat wage hours  age  union race, stat(N mean sd min max) col(stat)

    variable |         N      mean        sd       min       max
-------------+--------------------------------------------------
        wage |      2246  7.766949  5.755523  1.004952  40.74659
       hours |      2242  37.21811  10.50914         1        80
         age |      2246  39.15316  3.060002        34        46
       union |      1878  .2454739  .4304825         0         1
        race |      2246  1.282725  .4754413         1         3
----------------------------------------------------------------
\\\加入分组变量,汇报二维表形式:
tabstat wage hours  age  union race, by(married) stat(N mean sd min max) nototal long col(stat)
married     variable |         N      mean        sd       min       max
---------------------+--------------------------------------------------
single          wage |       804  8.080765  6.336071  1.151368  40.19808
               hours |       801  39.23845  9.099001         2        80
                 age |       804  39.21891  3.049911        34        46
               union |       656  .2759146  .4473151         0         1
                race |       804  1.404229  .5109335         1         3
---------------------+--------------------------------------------------
married         wage |      1442  7.591978  5.399229  1.004952  40.74659
               hours |      1441  36.09507  11.06107         1        80
                 age |      1442   39.1165  3.066058        34        45
               union |      1222  .2291326  .4204468         0         1
                race |      1442  1.214979  .4402987         1         3
------------------------------------------------------------------------

论文表1——基本统计量列表
Stata中神奇的bys!

2、数据字典

codebook [varlist][if][in][,options]    //数据字典
codebook price mpg
显示数据字典,每个字段的基本信息
codebook pric if price > 5000
按条件显示对应数据
codebook price in 10/20
指定条数
帮助信息,新窗口显示帮助信息
help codebook
codebook显示信息

2.1、新增字段generate命令sum() 函数

clear
input x1 x2
      1  2
      2  4
      3  6
      4  8
end
 
list 显示数据
gen sum_x1  = sum(x1)
gen sum_x2  = sum(x2)
list, clean noobs 
image.png

从结果中可以看出,gen 提供的 sum() 函数是累计求和。

2.2 egen命令的sum() 和rsum()函数
egen sum_x1=sum(x1)
egen sum_x2=sum(x2)
egen rsum_x = rsum(x1 x2)
egen rtotal_x = rowtotal(x1 x2)
list , clean noobs
image.png

从结果中可以看出,egen 提供的 sum() 函数计算该变量的总和,rsum() 计算行数值的相加和,rowtotal() 函数与 rsum() 功能一致。需要注意的是,rowtotal() 不能简写为 rtotal()。

此外,egen 还提供了丰富的针对行操作的函数,如 rowfirst()、rowlast()、rowmax()、rowmean()、rowmedian()、rowmin()、rowmiss()、rownonmiss()、rowpctile()、rowsd() 等,详细介绍可以通过 help egen 查看。

2.3egen和bys结合 分组计算和【三个变量,按两个变量分组,第三个变量求和】
bys kind year:egen type_TotalAmount = sum(type_sumAmount) 

通过kind类别 和year年份将数据分组,然后新增一列type_TotalAmount 计算出type_sumAmount的总和

table kind year, c(n type_sumAmount mean type_sumAmount mean type_sumAmount )
image.png

得到如上图的列表,但是想导出,尝试了很多方法都没有得到一个excel文件,导出的数据样式会变,即便导出word、text、log等都不理想,
提示一个好方法:在展示框选中所有数据,然后右键copy table 可以把数据的格式复制出来


image.png
2.4collapse命令,会覆盖原有数据,慎用,
collapse (sum)type_sumAmount ,by(year kind)
sort kind year
image.png

这个没有用table做出来的直观,后续遇到好的方法还会继续更新

3、画图

3.1.histogram (直方图)

histogram varname [if][in][weight][,[continuous_opts][discrete_opts]options]
//简写为 hist   最常用的三种形式
hist varname
hist varname,freq
    density   密度  den
    fraction   分数/小数    frac
    frequency   频率   freq
    percent    百分比   per
hist vaname, by(varname2)
price的直方图

price的频次图

3.2.graph box/ graph hbox horizontal 水平的

graph box vars [if][in][weight][,options]
graph hbox vars [if][in][weight][,options]
graph hbox price mpg length
横着的箱体图
graph box price mpg length
竖着的箱体图

3.3.小提琴图,选装 ssc install vioplot

vioplot price
vioplot price, over(foreign)
通过foreign分类后的price的小提琴图

graph query schemes

stata 默认主题是s2color建议选用s1mono


image.png
set scheme s1mono   //Stata重启之前设置为s1mono
set scheme s1mono, perm   //永久设置为s1mono (灰度图像)
image.png

3.4.散点图

[twoway] scatter varlist [if][in][weight][,options]
最基础的形式: twoway scatter y x
进阶形式; twoway scatter y1 y2 y3 ……x

twoway scatter weight length price
两个变量和y之间的关系
twoway scatter mpg weight, msymbol() mcolor() msize()
msymbol() 改变形状 help symbolstyle
mcolor()  改变颜色 help colorstyle
msize()  改变大小 help markersizestyle
可选的symbol
help symbolstyle

可选的大小
help colorstyle
可选的颜色
help markersizestyle
twoway scatter mpg weight price, msymbol(D) mcolor(red) msize(medium)
 twoway scatter mpg length weight price,  mcolor(black blue red) msize(medium)
多个颜色的选取
 twoway scatter mpg length weight price, by(foreign)  mcolor(black blue red) msize(medium) 
通过分类变量画图

4.Twoway命令入门

sysuse uslifeexp, clear


美国期望寿命的数据
help twoway
twoway命令语法格式

示例如下:

4.1带散点的折线图
twoway connected le year   //带散点的折线图
twoway connected le year
twoway connected le_male le_female year
twoway connected le_male le_female year
4.2垂直线图
twoway dropline le year   //垂直线图
twoway dropline le year
twoway dropline le_male le_female year
twoway dropline le_male le_female year
4.3脉冲图,y2会覆盖在y1上,
twoway spike le year   //脉冲图
twoway spike le year
twoway spike le le_male le_female year
twoway spike le le_female le_male year
twoway spike le le_male le_female year

twoway spike le le_female le_male year
4.4 面积图 y2会覆盖在y1上,注意下图区别
twoway area  le_male le_female year // y1会被覆盖,看不到
twoway area  le_female le_male year
twoway area le_male le_female year
twoway area le_female le_male year
4.5 lowess图,相对于散点图平滑曲线
twoway lowess le year  //平滑曲线
lowess le year   // 平滑曲线,叠加散点
twoway lowess le year
lowess le year
4.6graph twoway lfit y x (y对x回归的回归直线)
graph twoway lfit price mpg

5、统计描述指标

ci mean : 连续变量mean的置信区间
proportion(可简写为prop):分类变量mean的置信区间
pwcoor:变量的配对相关性
graph matrix:相关性矩阵

示例

实力使用数据导入

sysuse auto, clear
5.1ci mean : 连续变量mean的置信区间

ci 是confidence intervals的缩写,
ci means [varlist][if][in][weight][,options]
cii means #obs #mean #sd [,level(#)]
默认95%置信区间

ci mean mpg price, level(95)
ci mean mpg price, level(95)
cii mean 166 19509 4379, level(95)
cii mean 166 19509 4379, level(95)
5.2分类变量的置信区间:
choice 1
ci proportions [varlist][if][weight][,prop_options options]
ci prop foreign
ci prop foreign

缺点: ci prop 只能 用于二分类变量(binary)

ci rep78
ci rep78

rep78这个字段的特性
choice 2

proportion 分类变量的置信区间
proportion varlist [if][in][weight][,options]
prop
默认95%置信区间

 prop foreign
prop foreign

image.png
prop foreign rep78, miss    //不忽略缺省值
image.png

6、pwcorr查看变量的相关性

pwcorr [varlist][if][in][weight][,pwcorr_options]

pwcorr price headroom mpg displacement //考虑price、headroom、mpg、displacement这四个变量的相关性
image.png

如果要展示P值,需要在后面加“, sig”

pwcorr price headroom mpg displacement, sig
展示相关性的同时,显示P值
 pwcorr price headroom mpg displacement, star(0.05)
不想看数值,想知道是不是小于0.05

graph matrix绘制相关性矩阵

//geraph matrix varlist [if][in][weight][,options]
graph matrix price headroom mpg displacement
graph matrix price headroom mpg displacement, half
后面加“, half”,可以展示一半

学习参考:
https://www.zhihu.com/question/35871900
https://zhuanlan.zhihu.com/p/54759702

常用命令

  • 命令【1】:导入数据一般做实证分析使用的是excel中的数据,其后缀名为.xls,需要将其修改为.csv
    insheet using name.csv, clear
  • 命令【2】:删除重复变量
    sort var1 var2
    duplicatesdrop var1 var2, force
  • 命令【3】:合并数据(merge 合并)
    use data1, clear
    merge m:m var1 var2 using data2
    drop if _merge==2
    drop if _merge==1
    drop _merge
  • 命令【4】:描述性统计分析
    tabstat var1var2, stat(n min mean median p25 p75 max sd), if groupvar==0 or 1
    输出到word中:
    logout, save(name) word replace: tabstat var, stat(n min mean p50 max sd) col(stat)f(%9.2g)
  • 命令【5】:结果输出
    安装命令包
    ssc install estout, replace
    单个回归
    reg y x
    esttab using name.rtf, compress nogap r2 ar2 star(* 0.1 ** 0.05 *** 0.01)
    多个回归一起
    reg y x1
    est store m1
    reg y x2
    est store m2
    esttab m1 m2 using name.rtf, compress nogap r2 ar2 star(* 0.1 ** 0.05 *** 0.01)
  • 【命令6】生成滞后、差分数据
    tsset code year
    gen newvarname=l.varname
    gen newvarname=d.varname
  • 【命令7】多重共线检验之方差膨胀因子
    reg y x1 x2 x3
    vif
    【命令8】多重共线修正之逐步回归
    stepwise, pe(0.1): reg y x
  • 【命令9】检验是否遗漏高次项
    reg y xestat ovtest
    或者
    estat ovtest, rhs
    【命令10】 样本检验两样本均值T检验
    ttest var, by(groupvar)
    两样本中位数Z检验
    ranksum var, by(groupvar)
  • 【命令11】 生成虚拟变量
    tab year, gen(year)
    tab industry, gen(industry)
  • 【命令12】 数据缩尾处理
    findit winsor2
    之后安装
    winsor2 varname, replace cut(1 99)
  • 【命令13】异方差检验怀特检验
    ssc install whitetst
    reg y x1 x2
    estat imtest, white
    处理:“OLS+稳健标准差”
    reg y x1 x2 x3, robust
  • 【命令14】 DW检验
    gen id=_n
    tsset id
    estat dwatson
  • 【命令15】计算两个日期之间的间隔天数
    gen td=date(trading_date,'YMD')
    gen ed=date(eventdate,'YMD')
    form td ed %td
    gen d=ed-td
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容