实证分析-以Stata 软件为例的完整代码

1.何为实证分析

实证分析(positive analysis)通常是包括两个部分:理论分析(theoretical analysis-)+经验分析(empirical analysis-reduced form)。

一般意义上较为规范的实证论文需要包含理论经验的部分,第一部分建立经济学模型或者扩展现有的经济学模型,建立相关的计量模型,然后使用一些现有的可以得到的数据对建立的计量模型进行验证。当然也有很多研究由于缺少较为完整的理论模型,会通过梳理现有的文献提出一些假说,第二部分也是使用现有的可以得到的数据对提出的假说计量模型进行验证。

两种实证方法各有利弊,前者通过理论推导可以得出各个参数或者变量对被解释变量的影响,并且有理论基础会对数据的要求没那么严格,而后者有点像是通过数据来反向推断出结果,这一反向推断对数据要求较高,必须满足OLS回归的五个基本假设,现在很多计量方法都是为了解决现有数据不满足五个假定的难题。

2. 何为经验分析

经验分析(empirical analysis)一般可以分为以下几个步骤:

1。选取相关数据作为计量模型中的各变量的代理变量,并对各代理变量进行定义;

2。对选取的各代理变量进行统计性分析,一般是最大值 最小值 均值 方差 四分位数;

3。对选取的各代理变量进行协方差分析,两个变量的相关系数矩阵,验证选取数据是有效;

4。对选取的各代理变量进行回归分析,验证理论或者假说;

3.STATA 操作完整代码

以stata 代码为例,对以上过程进行逐一实现:

3. 1. 数据处理

字符转换:

stata不可以识别字符格式对数据,因此需要将原始数据的字符格式转换为数值格式:

egen X1=group(x1) ## 将变量x1变量转化为数值型字符,并命名为X1。

reshape long var,i(x1)##变量x1按照时间顺序进行排列

sort x1 year##变量x1按照时间顺序进行排列destring var1 var2, replace ### 将var1 var2 改为数值型变量,并替换之前的变量destring var1 var2,ignore(NA) replace ###将var1 var2 改为数值型变量,忽略所有"NA"字符(NA 替换为缺失值),并替换之前的变量destring var1, g(new_var1) ###将var1 改为数值型变量,并生成一个新变量new_e11tostring var1 var2, replace## 将数值型变量 var1 var2 改为字符型变量,并替换之前的变量(replace 命令)

宽数据和长数据的转换

reshape long stubnames, i(varlist) [options] ** 宽数据转化为长数据 (wide to long)reshape wide stubnames, i(varlist) [options] ** 长数据转化为宽数据 (long to wide)

reshape long var1 var2,i(series country) j(year) ## 宽数据转长数据

reshape wide var1 var2,i(country year) j(series) string## 长数据转宽数据

改变数据的label:

rename x1 X1##将变量x1 重新命名为X1

数据合并:

  1. merge 1:1

use "XX.dta"merge 1:1 var1 using "XX.dta"drop _megresave "new.dta"

2. merge 1:m :

use "XX.dta"

merge 1:m var1 using "XX.dta"

drop _megre

save "new.dta"

3. merge m:1:

use "XX.dta"

merge m:1 var1 using "XX.dta"

drop _megre

save "new.dta"

数据接驳

append using filename [filename …] [, options]

use "XX.dta"append using "XX.dta"save "new.dta"

3.2 统计性分析

有三个函数:sum( ); tabstat( );univar( );

  • sum(detail) keep(y x1 x2 x3 x4 x5) eqkeep(N mean p50)##sum函数默认的是最大值,最小值,均值和方差,如果想要调整,就使用后面的 eqkeep(N mean p50 sd p25 p75 )
  • tabstat y x1 x2 x3 x4 x5,s(n mean p50 sd p25 p75) , c(s)## tabstat函数默认输出均值,如果想要调整需要使用s(n mean p50 sd p25 p75),c(s)是用来转置结果
  • univar y x1 x2 x3 x4 x5## 可以输出最佳结果
  • ssc install asdoc, replace
  • asdoc sum, stat(N mean sd tstat) fs(12) dec(4)
  • ##stat(# # #) 表示需要输出的描述性统计变量,具体而言,stat(N mean sd tstat p1 p99) 表示输出的统计变量为样本数、算术平均数、标准差、t 值、1% 分位数、99% 分位数, fs(#) 为 Font size 的缩写,表示字号大小为 # 英镑, dec(#) 为 Decimal points 的缩写,表示输出结果保留到小数点后 # 位
  • asdoc pwcorr ar inst pinst ninst ctr sta roe swap growth mv,star(all) nonum replace
  • reg lnwage edu
  • asdoc reg ar inst ctr sta roe lev mv swap growth

3.3.相关性分析:

协方差矩阵;相关性图,直方图,时间序列相关图

  • 逐一画线性相关图

a.横截面数据: two (scatter y x1, mlabel(countryname)) (lfit y x1, ytitle("B") xtitle("A")), note("C"); ##y和x1的相关性,包含直线,y轴标题和x轴标题,以及备注#

graph save 1.gph ## 保存图片1

two (scatter y x2, mlabel(countryname)) (lfit y x1, ytitle("B") xtitle("A")), note("C");

graph save 2.gph ## 保存图片2

b.如果是面板数据:collapse(mean) y x1 x2 x3, by(countryname); ##求各个地区的均值#

two (scatter ggdp mc, mlabel(countryname)) (lfit ggdp mc, ytitle("B") xtitle("A")), note("C");

多个图片合成一个图片:

graph combine 1.gph 2.gph,rol(4)##rol(4)表示一行有4张图

  • 协方差矩阵:

pwcorr y x1 x2 x3 x4 x5, sig##sig 表示显著性

  • 直方图:

histogram frequency, percent xlabel(0(20)100) ylabel(10(10)100) xtitle("For you to use this technology, it would need to be recommended by?",box) xlabel(,valuelabel) xlabel(, angle(30)) bin(4) addlabels

  • 时间序列相关图

scatter winter spring summer autumn year, xlabel(2002(1)2004) ylabel(600(50)100

0) ytitle("Sales") xtitle("Year")

3.4 相关性检验:

单位根检验:

LLC检验语法:xtunitroot llc varname, lag(n)

IPS检验语法:xtunitroot ips 变量名, lag(n)

协整性检验:ssc install xtwest tsset region year xtwest depvar varlist [if exp] [in range] , lags(# [#]) leads(# [#]) lrwindow(#) [constant trend bootstrap(#) westerlund noisily mg]

##或者使用一下检验 xtcointtest kao y x1 x2 x3Hausman检验:

xtreg y x1 x2 , fe

est store fe

xtreg y x1 x2 , re

est store re

hausman fe re

怀特检验(异方差): estat imtest,white

回归信息检验:estat imtest

Durbin-Watson(一阶自相关): estat dwatson

序列相关检验:estat durbinalt

滞后阶数选择:estat durbinalt,lags(N)

条件异方差检验:estat archlm,lags(N)

可选变量的异方差检验:estat szroeter var1…varN

5。回归分析: 横截面回归,面板回归

  • 横截面回归:

reg lnq lnk lnl

regress var1…varN,noconstant ##无常数

  • 面板数据回归

xtset country year##以地区和年份区分数据

xtreg y x1 x2 x3, fe ##固定效应面板回归

  • 二值选择模型logit/probit

logit y_bin x1

GMM模型

ssc install xtabond2

xtabond2 depvar(因变量) varlist(系列解释变量:前置变量、严格外生变量、内生变量)

xtabond2 y L.y i.t, gmmstyle(L.y) ivstyle(i.t) robust noleveleq ####L.y表示y的滞后lag t时间 nolevel或者noleveleq表示是difference-GMM,系统默认的system-GMM

SGMM模型xtabond2 sjY L.sjY x1 x2 x3, gmmstyle(L.sjY x2 L.x3) ivstyle(x1)twostep robust small orthogonal

注意:使用system-GMM的前提是数据应该是平稳的。

6。如何将回归结果导出到word

  • 方法1.

ssc install outreg2## 安装outreg函数

reg y x1## 回归模型1

outreg2 using myreg.doc, replace ctitle(Model 1) ##导出回归结果,标题位Model 1

reg y x1 x2##回归模型2

outreg2 using myreg.doc, append ctitle(Model 2)##append 意思是将第二个结果添加到第一个回归结果模型中

outreg2 using myreg.doc, append ctitle(Model 2) keep(x1 x2 x3) addtext(Country FE, YES)##keep(x1 x2 x3) 表示保持这三个变量不变,addtext表示在给出的默认结果输出表格里面加入Country FE, YES

  • 方法2: 简化版本

ssc install asdoc, replace

asdoc reg price mpg , nest replace

asdoc reg price mpg weight, nest append

asdoc reg price mpg weight length, nest append

7。一些其他的附加的代码:

  1. 输出描述性统计结果到word

outreg2 using x.doc, replace sum(log)

outreg2 using x.doc, replace sum(log) keep(price mpg turn)

outreg2 using x.doc, replace sum(log) keep(price mpg turn) eqkeep(N mean)

set more offoutreg2 using x.doc, replace sum(detail) keep(price mpg turn)

指定变量+全部统计指标(筛选)

outreg2 using x.doc, replace sum(detail) keep(price mpg turn) eqkeep(N mean p50)

分组描述

set more offdrop(make rep78 headroom trunk weight length displacement gear_ratio)bysort foreign: outreg2 using x.doc, replace sum(log) eqkeep(N mean)

如何保存数据

save myauto.dta, replace

导出excelsysuse auto, clearexport excel using auto.xlsx, replace //直接导出export excel using auto1.xlsx, replace first(variables) //导出第一行为变量名export excel using auto2.xlsx, replace first(varlabels) //导出第一行为变量标签export excel using auto.xlsx, cell(B2) sheet("newsheet", replace) first(variables) //将内容导出到newsheet中,从B2单元格开始导出数据

发表回复

相关推荐

人民黃河期刊

《人民黃河》是月刊,創刊於1949年,是由水利部主管、黃河水利委員會主辦的水利科技專業學術刊物,自1992年起連續6次入選全國...

· 4分钟前

不看後悔系列:韓劇《浪漫的體質》

為什麼寫韓劇,嗯,答主是學韓語的,又是個文案,所以韓劇真的是再適合不過瞭。但是,這不是我今天寫這篇文的原因。《慶餘年...

· 5分钟前

菜字头食品搭载业务增长新引擎,构建集团完整供应链生态

应用案例概述 铱云供应链 公司名称:菜字头食品‍‍‍‍‍‍‍‍‍‍‍‍‍ 业务简介:成功孵化饭戒、韦小堡、喜赞等品牌,拥有线下门店超 ...

· 11分钟前

共聚焦顯微鏡——摩擦學領域的新款“滑板鞋”

兩個物體表面相互接觸即會產生相互作用力,研究具有相對運動的相互作用表面間的摩擦、潤滑與磨損及其三者之間關系即為摩擦學...

· 11分钟前

土耳其语语法学习

土耳其语(原:Türkçe,英语:Turkish language)属阿尔泰语系突厥语族乌古斯语支,与它同支的语言有阿塞拜疆语、土库曼语和 ...

· 17分钟前