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

你可能感兴趣的:(1、Stata入门---基础统计和作图)