毕业论文写的空间计量,碰到的很多问题都是在论坛里找到答案的,很感谢论坛的帖子和各位大神们的及时回复,现在毕业论文终于也告一段落了,小白把自己这两个多月的空间计量笔记整合一下发到论坛,谢谢论坛的帮助~,以下各部分可以说是论坛零散问题的总结和自己碰到的小问题,引用的会尽量标注引用地,没有注意到的地方希望大家多多提醒哈~开始阶段呢,本人是有县域数据,但是在做空间计量的时候本人用的方法需要用到经纬度,经纬度的数据在论坛里有,我因为太久没有保存网址,故就不给大家贴出来啦,大概名字是1388个县(市)经纬度,因为论坛里的数据顺序和我的不一样,所以本人当时在数据处理初期用了excel的Vlookup函数进行筛选排序,因为数据量较大,还处理了一会。
提前需要说明的是:本人使用的是县域面板数据。
接下来开始碎碎念啦:
【如何安装stata】这个帖子有各个版本的stata,论坛里也有很多~http://tieba.baidu.com/p/5670698041?traceid=
一、空间计量的原理
普通计量的一大假设是各个观测值是独立的,但这个假设在空间数据中不成立,空间上各观测值是空间相关的,即空间距离越近的观测值越相似,但同时也要注意到,空间是否相关并不是绝对的,而是取决于所选取的空间权重矩阵。
目前主要空间计量模型分为:空间误差模型、空间自相关模型和空间杜宾模型。(后面讲具体实证过程将提到怎么选取模型)
这一块呢,由于本小白也是初入门,所以在此不赘述啦,在此这个帖子有很多相关资料:https://bbs.pinggu.org/thread-3488683-1-1.html
二、用geoda构建空间权重矩阵+计算莫兰指数
本小白之前对于stata并不是很熟悉,而GeoDa的操作更加简便(maybe哈哈),所以我是用geoda生成了galt格式空间权重矩阵并算出莫兰指数,主要参考的是这个帖子:https://www.zhihu.com/question/25810650。这个帖子里的东西很详细啦,基本上跟着这个操作没问题的啦。
不过!!!在这里要提示的问题是:
【Q:如何将excel数据导出为txt,并以逗号分隔数据】
A: step1将excel另存为csv格式
step2将CSV格式用记事本打开,然后选择另存,记得将后缀改为txt
同时,有一个小细节大家一定要注意!!!!!就是文本文档里的第一行是要你自己手动输入的嘛,你的逗号一定要用英文的逗号,不能用中文逗号,用中文版本没法运行啦!
基本上此时,莫兰指数已经可以算出来了,记住莫兰指数是截面数据算的(就是一年一年的),所以面板数据的话自己要提前整理一下,在判断莫兰指数是否显著的时候,GeoDa是可以算出来的,大概步骤(因为本人没有打开页面啦,大概说一下):鼠标右键,然后选择permutation=999(或者>999),然后就会出现如本人运算结果啦:
三、用stata开始正式建模
(一) 将excel数据导入stata
可以参见这个帖子:https://bbs.pinggu.org/forum.php?mod=viewthread&tid=697675&page=2
【如果出现数据是红色的】说明是字符型,要改为数值型,stata代码为 destring 变量名,replace ,如果出现不能更改的话使用代码:destring 变量名 ,replace force(force很关键)
【定义面板数据】tsset/xtset province(地区变量名) year(年份变量名)
【如果出现unbalanced】因为空间模型需要数据显示strongly balanced,所以在此我们需要调整数据,我当时在这一块卡了几天,原因在于,由于我已经建立了空间权重矩阵,并且我的1400多个县域的数据已经和矩阵顺序对应好,所以我不能随意使用xtbalance删减空缺值,我当时是将所有空缺值用0代替了,使用代码:replace var=0 if var==.(这个代码是我手动打的,如果大家直接copy不太对的话可以在论坛里找找,很多人分析过的)。
!!!需要注意的是,我当时很莫名其妙的在于我使用代码后,后面出现了很多空值行,这些多余的行都要删掉,删掉后再用定义面板数据的代码,这时才能显示strongly balanced,否则的话还是unbalanced。
这里推荐一位很好的老师,@黄河泉 黄老师代码十分有效,大家可以多看看黄老师曾经在论坛上的回复。
【stata处理缺失值的常见代码】
mdesc查看空缺值
mvencode赋值
tsfill填充
(二)将生成的gal空间权重矩阵导入stata(原来生成的是gwt格式矩阵,但是后来导入stata的过程中很麻烦,用gal的一下子就导入了)
【事前超级重要的提醒】各版本stata矩阵维度上限:IC维度仅有800,其他两个是11000!!!!
【如何将gal转化为spmat格式!!!!】(这里我在论坛上找了好久,卡了很多天,最后在论坛上找到一个大神的帖子终于解决了这个问题,但是好像不适用于转化gwt格式文件,刚才没有找到大神的原帖,在此将我笔记上的大神步骤搬运给大家,如果大家有知道帖子网址的欢迎贴出,也在此再次向那位大神表达我的感谢,是他拯救了我的毕业论文!)
终极目标是要讲gal转化为spmat格式
首先,生成可供R或者matlab使用的dat格式 代码:spwmatrix import using .gal,wname(W) rowstand xport(,dat)(注意dat前面一定是英文逗号,不是我打错了)
然后,将dat用excel打开并保存为excel格式,再用stata引用(参见前面的如果将excel引入stata)保存为dta格式,即stata格式,此时已经是经过标准化处理后的矩阵。
接下来,转化为spmat格式, spmat dta W1 a1-a29(W1是新名字!!,同时a1-a29是变量名,请各位自行调整)
spmat save W1 using "和W1一样的路径"
spmat use W3 using ……(W3是新名字)
原谅我的表述能力,这个是我试过论坛里最有效的方法,大家要是不能实现,可以在论坛里找找,请好心人找到后贴出来。本人感觉原理和这两个帖子里有点相似,大家可以参考参考:https://bbs.pinggu.org/thread-4590876-1-1.html
https://bbs.pinggu.org/thread-5751785-1-1.html
(三)计量选模型
这个时候呢,大家已经导入了可以供stata用的空间权重矩阵,面板数据也是strongly balanced的了,恭喜大噶可以开始计量啦!!
给大家在最开始推荐一个很好的经验贴:https://bbs.pinggu.org/thread-4677437-1-1.html
然后呢,关于各种检验,论坛上资料特别零散,我个人顺序:
【LM检验及代码】用LM检验去验证,然后验证结果显示SEM和SAR都可以,代码大家可以参见:https://bbs.pinggu.org/thread-6270709-2-1.html
!!!需要注意的是,lm检验需要选取一年截面数据,而不是用面板数据。
【wald检验】用wald检验判断发现选择空间杜宾模型,关于wald和lr检验代码,有一个特别好的大神帖子推荐给大家:https://bbs.pinggu.org/thread-6941453-1-1.html
大家可以根据他的代码结合自己的改,这篇绝对比在论坛里翻来翻去或者问那些现金帖要好得多,静下来改下代码就行运行了。
【hausman检验】用hausman检验判断固/随机效应 ,豪斯曼检验在我最开始给大家推荐的经验贴里有写,大家可以自行改,不过需要注意的是进行固定效应后下一步必须是est store fe,随机效应后一步必须是est store re(当然fe re可自己改着写),然后再是hausman fe re,才有结果数据。
关于hausman检验结果如何输出到word,大家可以认真学学黄老师的帖子回复的代码改改,我就是改了一下输出成功的:https://bbs.pinggu.org/thread-6271657-1-1.html或者https://bbs.pinggu.org/thread-6858076-1-1.html
【中介效应】接下来呢,我结合自己论文做了中介效应,用的是spss 的process程序。
写到这里我的大部分经验就差不多啦,可能有些小细节没来得及写,到时候我看着补充吧,看起来超级简单的过程本小白做了快两个月,所幸得到的结果还不错,也谢谢论坛大家的帮助与及时解惑啊!祝大家论文顺顺利利!!希望对大家有帮助!