数据处理工作-基于stata软件

1.帮助

help gsw

2.快捷键

ctrl + D 是运行代码的快捷键

3.安装包

ssc install package-name //最基础的安装包的方法
findit package-name      //ssc不起作用的时候就去查找包
search package-name      //和findit命令差不多,不过findit强一点

4.导入操作

clear                    //清空stata的内存
clear all                //清得干净一点
cd 文件夹路径             //定义工作台
use 某某.dta , clear     //导入dta文件
doedit 某某.do           //导入do文件
import excel 某某.xlsx,sheet("sheet1") firstrow allstring //导入Excel文件

5.导出操作

save "xxx.dta",replace

6.长宽面板转换

//对于宽面板数据而言,它可能变量名中含有很多乱七八糟的中文夹杂着,导致我们没法顺利完成宽转长,那么就需要先提取变量名中的特定字段作为新变量名
drop if 证券代码==“”  //其实任何清洗的开头,都应该确认id代码的唯一性和数据类型准确性,这一步的目的是提出string型的id变量。
rename 每股收益*基本报告期*报币种原 **  //“*”是一个通配符,例子中的通配符有两个作用,第一个:将所有符合这样统配表达式的变量全部投进去运算;第二个,将用通配符提取的字段替换整个原字段。
ren 净资产收益率*平均报告期*年报单位 ** //ren就是rename的缩写
reshape long var_a var_b ,i(id),j(year) //宽面板转长面板
save "\\\" ,replace

7.合并数据

use table_a.dta,clear                  //当前的dta记作table_a
merge 1:1 id using "C:\table_b.dta"    //1:1意为全合并,table_a与table_b 不分主次
merge m:1 id using "C:\table_b.dta"    //m:1意为多对一合并,m指主表格table_a可能id不唯一
merge 1:m id using "C:\table_b.dta"    //1:m意为一对多合并,m指辅表格table_b可能id不唯一
merge 1:1 id year using "C:\table_b.dta" //这个是多个匹配依据的实现方法
drop if _merge == double  //_merge变量是merge过程的隐藏变量,此行代码剔除id非匹配观测
use table_a.dta,clear
append using table_b.dta

8.变量转换与变量计算

//字符型变量与数值型变量的转换
destring str_var,replace
tostring double_var,replace

//创建与删除
keep x
drop x
egen mean = mean(x)
egen sd   = sd(x)
di ln(8)
display ln(8)

//改变数值型变量的格式
format variable %14.0g

//打标签
label variable "label"

//根据布尔条件更改某变量序列内的值
replace variable=. if variable >= 50000 //将异常值更改为缺失值
drop if variable=.                      //根据异常值剔除观测

9.ID唯一性

ssc install unique
duplicates tag id , gen(label) //tag 是打标签的意思
duplicates drop id,force       //直接剔除重复的id

10.字符串操作

//根据内容替换内容
generate new_var = subinstr(str_var,"需要被替换的字符串","准备上位的字符串",1)

//截取字符串
generate new_var = substr(var,start_location,stop_location)

//分割字符床
split splited_var ,gen(splited)
split splited_var ,p(",") gen(splited)

11.循环的基本形式

foreach x of varlist {
gen ln`x' = ln(`x')
}
forvalue i = 1(1)20{
gen x`i'=`i'
} //1(1)20是指以1为起点,1为间隔,20为终点

12.生成虚拟变量的方法

//手搓螺旋丸
gen dummy2 = cond(variable==1,1,0)//cond意为condition,若1,则1,否则0
replace dummy2=. if variable==.
//自动生成
tab var , gen(前缀_) //tabulate,会生成n个虚拟变量
tabulate province,generate(prov)  //举个例子
//自动生成(在回归中)
reg y x1 i.x2 //也就是在所需要加 i.

13.根据变量数值分位数,将样本等分

xtile new_var = old_var,nq(3) //表示要分为3分
tab new_var,gen(前缀)         //可以进一步生成虚拟变量

14.分组计算

bysort var1 var2 : function

15.缩尾与截尾

ssc install winsor2
winsor2 var1 var2,replace cuts(1 99) //缩尾处理
winsor2 var1 var2,replace cuts(1 99)trim //截尾处理

16.面板差分方法

webuse pig ,clear //调用案例数据
xtset firm_id year 
gen lweight=L.weight //生成新的列,而且每个id不串号
gen dweight = weight-lweight //这就算做完一阶差分了,会有缺失值
gen l2weight=L2.weight
gen d2weight = weight-l2weight//这就算是做完二阶差分了
gen d1weight=weight-L.weight//上面的代码其实是展示细节流程,而真正写代码的时候,几步可以并作一步走
gen ddweight=d.weight//这就是直接算一阶差分,都不用自己去设置减号

17.剔除组件效应

//剔除组间效应:分组计算出中位数or平均数,然后各组减去自己的中位数、平均数
bysort 分组变量 :egen medianvar=median(变量)
gen 新变量=变量-medianvar

18.暂元

local local_name "var1 var2 var3"
`local_name'

global global_name "var1 var2 var3"
$global_name

19.批量处理变量

local grains "rice wheat corn rye barley oats"
        foreach x of local grains {
                display "`x'"
        }

20.结果窗口显示设置

set more off
set more on

21.模型检验模块

// 一、变量个数和阶数是否合适
reg y x1 x2
estat vif     //看方差膨胀因子,针对多重共线性,按照经验,要求mean vif小于10
estat ic      //看aic、bic准则,惩罚变量数,越小越好
estat ovtest  //默认将yhat的高次项放进解释变量,尝试检验是否显著,针对遗漏变量
estat ovtest,rhs //将解释变量的高次项放进解释变量,尝试检验是否显著,针对遗漏变量
linktest      //所谓 “连接检验”
以上检验都是reg之后立马run就行的。

// 二、变量是否需要做变换:Box-Cox检验 
三种情形:
1)λ=1,线性变换z=y-1;
2)λ=-1,倒数变换z= 1-1/y;
3)λ=0,对数变换z= lny。
help boxcox
boxcox y x1 x2 x3,nolog  //nolog表示不显示迭代过程
无法拒绝哪个原假设,就做对应的变换。

// 三、异方差检验
reg y x1 x2 x3 x4 x5
rvfplot       //作残差图
**BP检验
reg
. estat hettest, iid //使用y的拟合值进行BP 检验,“hettest”表示heteroskedasticity test
. estat hettest, iid rhs //使用所有解释变量进行BP 检验
. estat hettest lnq,iid //使用变量lnq 进行BP 检验
**怀特检验
. estat imtest,white //“imtest”指information matrix test(信息矩阵检验)

// 四、自相关检验 --还是用R吧,时间序列还是用R吧
tsset year
reg y x1 x2 x3
predict yhat,r
ac yhat  //自相关图
. estat bgodfrey //BG 检验
. estat bgodfrey,nomiss0 //
. wntestq e1 //Q 检验
. corrgram e1 //corrgram 进行Q 检验。
. estat dwatson //DW 统计量:

22.含交互的回归

//假如你要自己生成虚拟变量的话,手搓螺旋丸的话:
gen dummy = 1 if x1 = 30
replace dummy = 0 if x1 = 40 //列这个例子的目的是想说gen之后继续编辑该变量的值,应该转用replace

//但其实一般可以直接使用
i.x1

//进入正题
dummy##x2  //list dummy##x2 means: list dummy x2 dummy*x2
dummy#x2   //list dummy#x2  means: list dummy*x2         ,一般不用这个,会有些问题。

23.工具变量法

所模仿的原文:【毕业论文】工具变量回归、检验及结果读法 - 知乎

 一、在什么场合下,能用来干嘛?

两阶段最小二乘,顾名思义,是将回归分为两个阶段进行,然后查看估计的结果。

第一阶段是使用工具变量(iv)去做解释变量(x)的回归;

第二阶段是用工具变量对解释变量的估计值(x')去对被解释变量(y)做回归。

// 二、实现
. reg $Y $X_CON  //基准回归一下
. ivregress 2sls $Y $X_CON ($X = $IV), vce(robust) first
*vce(robust):返回稳健性标准误,使用效果同可选项r
*first:展示第一阶段回归结果
 假设工具变量的估计结果是良好的,但是还得需要通过工具变量的相关性和无关性检验。估计结果不好的工具变量我们不会想去使用(因为不符合我们的理论预期),但是没有通过检验的工具变量我们不能去使用(因为假设条件不成立,结果无效)。工具变量的检验主要分为两点:

1.相关性检验:即检验工具变量(iv)和核心解释变量(x)是否相关【我们希望他是相关的】。

可以通过以下代码实现:

 qui ivregress 2sls $Y $X_CON ( $X = $IV )  // 检验之前需先进行回归,系统才知道对这个回归模型进行检验
 estat firststage    // 相关性检验 -- F 越大越好

对于结果,我们重点关注R-sq和F,一般来说,F > 10,我们可以认为工具变量和解释变量是相关的,满足假设条件。若是Prob > F的值低于0.05,但是F < 10,则认为产生若工具变量和解释变量是弱相关的,为弱工具变量。
注:弱工具变量其实并不是一个特别大的问题,只是会导致二阶段估计的时候,核心解释变量的估计系数方差增加,更不容易通过显著性检验。若在二阶段估计的时候,核心解释变量是显著的,则不用太过理会此处的弱工具变量。

2.无关性检验:即工具变量是足够外生的,和y无关。

检验的代码为:

 qui ivregress2 2sls $Y $X_CON ( $X = $IV )  // 检验之前需先进行回归,系统才知道对这个回归模型进行检验
 estat overid        // P 越大越好
 estat endogenous    // P 越小越好,此为异方差稳健的DWH检验

三、读结果       

二阶段回归统一需要重点关注两个点:

(1)核心解释变量的显著性

(2)核心解释变量的系数(要与基础回归同号,且变化的倍数最好小于十倍)

有些时候,为了行为和展示的方便,我们通常会将多个表格进行列排。上述的回归能够让我们比较好的看到结果,但是却并不适合直接放到文章中,因此我们需要进行些许的调整。可以使用这个编辑好的代码:
 
regress $Y $X $CONTROL                              // 得到基础回归结果
 est store basic
 outreg2 using "ivreg.xls", cttop(basic) tstat bdec(3) tdec(2) replace
 ​
 // 一些参数和变量的设定
 local tab "basic"
 local iv 
 local vars $IV      // 遍历所有工具变量
 ​
 // 注意这里的命令是ivregress2而非上边的ivregress 安装方式:取消下行注释
 // ssc install ivregress2 // 安装ivregress2
 ​
 // 遍历所以工具变量进行回归
 foreach v of local vars{
     local iv `iv' `v'
     ivregress2 2sls $Y $X_CON ( $X = `iv' ), first      // 保存第一阶段结果
     est restore first
     est store fst_`v'
     outreg2 using "ivreg.xls", cttop(first-`v') tstat bdec(3) tdec(2) append
 ​
     ivregress2 2sls $Y $X_CON ( $X = `iv' ), first      // 保存第二阶段结果
     est restore second
     est store snd_`v'
     outreg2 using "ivreg.xls", cttop(second-`v') tstat bdec(3) tdec(2) append
 ​
     local tab "`tab' fst_`v' snd_`v'"
 }
 ​
 esttab `tab', mtitle(`tab') replace         ///
     nogap compress b(%6.3f) s(N r2_a) se    ///
     star(* 0.1 ** 0.05 *** 0.01)            ///
     addnotes("*** 1% ** 5% * 10%") 

补充:

//如果工具变量与内生变量的相关性很弱,会导致工具变量对内生变量的估计的系数方差很大。这时便要用有限信息最大似然法liml:
ivregress liml $y $x_con ($x=$iv),r first  
//如果存在异方差,要用广义矩估计:
ivregress gmm $y $x_con ($x=$iv),r first  

24.异方差检验与处理

25.自相关检验与处理

26.多重共线性检验与处理

27.模型设定与数据处理

28.内生性检验与处理

29.联立方程模型

30.面板数据模型

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Fama-MacBeth方法是基于截面数据的一个常用的面板数据分析技术,旨在寻找资产收益率与其市场风险和其他宏观经济变量之间的关系。STATA软件提供了Fama-MacBeth方法的实现。 以下步骤可以实现Fama-MacBeth方法: 1. 导入数据:首先需要将数据导入STATA软件,确定要分析的变量并将其转化为STATA格式。 2. 数据处理:Fama-MacBeth方法需要在每一期内对数据进行回归分析,因此需要对数据进行处理,以便STATA能够正确识别时间序列和截面数据。 3. 进行面板数据回归分析:使用STATA中的xtreg命令来估算每一期的多元回归模型,其中自变量为市场收益率和其他宏观经济变量,因变量为资产收益率。 4. 进行Fama-MacBeth回归分析:使用STATA中的rolling命令计算每期的系数估计值,并使用regress命令对所有系数进行平均,形成横截面回归模型,最终得到了系数的Fama-MacBeth估计。 5. 进行假设检验:使用STATA中的test命令进行系数显著性检验,并利用Fama-MacBeth标准误差对每一估计系数的置信区间进行构建。 6. 进行结果分析:分析估计系数的符号、大小、显著性及置信区间,发现资产收益率与市场风险和其他宏观经济变量之间的关系。 ### 回答2: Fama-MacBeth模型是一种被广泛应用的多期回归分析模型,常用于金融、经济学领域中的跨时间面板数据。它的主要优点是简单易行,且可解决在传统跨时间面板数据回归中面临的异方差问题。 Stata是一个操作方便、功能强大的统计分析软件,可以帮助我们运用Fama-MacBeth模型对跨时间面板数据进行实证研究。下面是一些基本步骤和注意事项: 1. 导入数据。在Stata的命令行窗口中输入import delimited filepath,其中filepath指代你存放数据文件的绝对路径。Stata支持多种数据格式,比如csv、xls等。 2. 预处理数据。将数据通过Stata提供的工具清洗、调整格式,包括缺失值填补、数据类型转化等。 3. 创建汇总变量。对每一个时间点t,计算所有截面单位的均值。这个过程可以通过命令collapse完成。 4. 进行第一步回归。将因变量与所有自变量(包括时间不变量和已创建的汇总变量)一起回归。Stata提供了reg命令来进行最小二乘回归。 5. 创建截面回归的系数。通过将第一步回归中各个自变量的系数称为截面回归的系数。 6. 进行第二步回归。将截面回归各自变量的系数与之前创建的汇总变量一并作为自变量回归因变量。可以使用命令regress完成第二步回归。 7. 对结果进行检验和解释。可以利用Stata提供的多种命令,比如estat hettest、esttab等,对模型结果进行诊断和呈现。 需要注意的是,在进行Fama-MacBeth模型时,数据的样本容量需足够大,以确保结果的可靠性。另外,要对结果进行统计学检验,以确保模型的拟合效果和预测能力。 ### 回答3: Fama-Macbeth Regression是一种多元素回归方法,用于分析资产组合的因素影响。它首先在时间序列上估计因子载荷,然后在交叉部分上估计回归系数。 要在Stata中实现Fama-Macbeth回归,必须执行以下步骤: 1. 导入数据:使用Stata命令“import”或“use”导入包含因子和资产收益率数据的数据集。 2. 按时间序列估计因子载荷:使用Stata命令“regress”用时间序列数据估计因子载荷。将因子载荷存储在新的数据集中。 3. 根据因子载荷估计交叉斜率:使用Stata命令“xtpcse”对每个交叉部分进行回归。将回归系数存储在新的数据集中。 4. 计算标准误差:使用Stata命令“newey”计算因子载荷和回归系数的标准误差。 5. 输出结果:使用Stata命令“outreg”或“estout”输出因子载荷和回归系数的结果。 需要注意的是,在数据分析过程中需要保证数据的质量和准确性,以确保结果的可靠性和有效性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值