今日问题1
您好!我的数据是城市_行业_年份的面板数据,被解释变量是0、1的哑变量,我在回归中同时控制了随时间变化的城市固定效应以及随时间变化的行业固定效应,我的基本回归是线性概率模型,作为稳健性检验,我想同时看一下probit和logit的回归结果,logit模型和probit模型能否控制随时间变化的城市固定效应和随时间变化的行业固定效应,是不是我在stata中需要使用xtprobit和xtlogit命令?
在方程中我需要控制随时间变化的城市固定效应和随时间变化的行业固定效应,方程中放入城市#年份行业#年份与放入i.城市#i.年份 i.行业#i.年份这两种放入有区别吗?
如果可以使用xtprobit、xtlogit命令,在stata中该如何处理高维控制的问题,要控制随时间变动的城市固定效应和随时间变动的行业固定效应,如果是线性概率模型,我直接使用reghdfe命令,如果是logit、probit模型该如何办?我试试直接使用xtlogit、xtprobit命令 xtlogit/xtprobit y x 城市#年份行业#年份运行速度非常慢,一个回归方程可能就需要半天的时间。
今日解答1
这两者是有区别的。后者使用的是因子模型,相当于添加了一系列的虚拟变量,而前者出现的是两个变量的交乘项。因此,为控制此类固定效应,应该选择使用因子模型。
至于运算速度方面,运算慢主要是模型难以收敛。建议:1,限制logit的迭代次数;2,尝试多操作几次,初始点的不同,收敛的速度也会不一样;3,减少不必要的虚拟变量,也会有所改善。
注:运算速度慢还有其他可能的原因,比如电脑的处理器性能和内存大小。当变量过多的时候会导致数据量膨胀,此时影响运算速度。这个和stata版本也有关,支持多核运算的版本要快一些。在极端情况下还可以考虑用Python做回归,指定求解的各种细节(甚至包括并发线程数!)都可以加速。
今日问题2
我们回归方程中如果控制的固定效应特别多,超过stata的内存时,我们使用reghdfe命令,如果现在我想使用probit、logit回归,同样出现控制的固定效应过多,超过stata的内存,该怎么办?在stata中该如何设定?
今日解答2
Set memory命令可以扩大stata占用内存的上限。但是支持运算数据的大小上限基本取决于内存条的大小,在任务管理器可以看电脑内存占用情况。和上个问题类似,很多时候需要一台高性能的电脑,32GB的内存处理亿级数据,有时候都需要优化算法。Stata对变量的数目、观测值总数都有限制,并且一般数据大小不能高于电脑的内存。否则就需要调用虚拟内存,运行速度大幅下降。即使如此,还不一定能正常运算。同时stata13和stata14有32位版本和64位版本,后者支持自动扩大内存,前者大概只支持1GB左右的内存空间。你需要结合报错的具体内容,看解决办法。
今日问题3
这个文件名中有暂元怎么处理
. forvalues i=2/7{
2. merge m:m stkcd year using"C:\Users\徐晓慧\Documents\corporate governance andCSR\"`i'_Basic.dta""
3. keep if _merge==3
4. drop _merge
5. }
出现错误
invalid '2_Basic.dta'
今日解答3
修改完如下:
forvalues i=2/7{
merge m:m stkcd year using "C:/Users/徐晓慧/Documents/corporategovernance and CSR/`i'_Basic.dta"
keep if _merge==3
drop _merge
}
报错原因:stata里“\”还有转义符的作用。因此,之前的代码会有报错。
学术指导:张晓峒老师
本期解答人:随风、海蓝
编辑:海蓝
统筹:易仰楠 李丹丹
技术:知我者 赵雅轩 郭凯
联系客服