《傻瓜计量经济学与stata应用》第二章do文件,记得把数据考到当前目录或带上路径,否则可能无法打开

*==============================================================================*
*===========================第2章 数据处理与图形绘制===========================*
*==============================================================================*

*-2.1 数据导入
    *-(1) 复制粘贴
    *-(2) 菜单-文件-导入-选定。
    *-(3) import
    **************注意:是否选择-第一行为变量名(据具体情况);有时中文可能报错**************
    
    import excel "路径", sheet("Sheet1") firstrow //第一行为变量名
    summarize //描述性统计分析结果
              //缺失值,原因:复制粘贴过程中,地区、县区市被stata默认处理成字符型,无参数值,需转换成数值型
    encode 地区, generate (province)  //字符型与数值型转换,将地区变量解码成数值型变量,并将其储存在新生成的province中,省份已经被数值取代
    encode 县区市, generate (county)  //字符型与数值型转换

    generate code =province           //查看省份
    by province, sort: list province code, constant   //constant代表重复变量只出现一次。只是为了展示

    summarize if province==16         //单独查看江西省数据。81个县市,不包含区
    summarize if province==16, detail //详细信息
    
    rename 地区生产总值万元 gdp
    rename 第二产业从业人员人 employ
    summarize          //stata运算中系统自动忽略数据缺失项。横截面数据不可以进行插值处理
    help summarize 
    regress gdp employ //stata会自动按照最小的数据个数进行运算
    
*-2.2 数据类型}
*-2.3 数据合并
    use autosize.dta, clear //主数据
    merge 1:1 make using "D:\傻瓜计量经济学与stata应用\Stata数据集\autoexpense.dta"  //变量make为汽车型号
    merge 1:1 make using autoexpense.dta // 改变路径之后的命令 
    drop _merge //了解具体匹配信息后删除_merge,否则后续无法继续匹配其他数据
    merge 1:1 make id using "D:\傻瓜计量经济学与stata应用\Stata数据集\autoexpense.dta", keep (match) nogen //nogenerate不要创造_merge变量;keep只保留匹配成功的观测值。
    merge 1:1 make id using autoexpense.dta, keep (match) nogen                   
    *-第一种
    use autosize.dta //主数据
    merge 1:m make using "D:\傻瓜计量经济学与stata应用\Stata数据集\autoexpense2.dta" //一对多,也可以此为主数据
    merge 1:m make using autoexpense2.dta
    sort make year
    drop _merge
    list //主数据中没有的数据,无法匹配成功。_merge==2表该数据仅来源于调用数据
    
    merge 1:1 id using "D:\傻瓜计量经济学与stata应用\Stata数据集\autoexpense2.dta" //
    merge 1:1 make id using "D:\傻瓜计量经济学与stata应用\Stata数据集\autoexpense2.dta", keep(match) nogen //只保留匹配成功数据,同时删除匹配记录
                     
    merge 1:m make id using "D:\傻瓜计量经济学与stata应用\Stata数据集\autoexpense2.dta", keep(match) nogen 
    sort make year
    drop _merge
    list
    *-第二种
    use autoexpense2, clear //主数据
    merge m:1 make using "D:\傻瓜计量经济学与stata应用\Stata数据集\autosize.dta" //多对一,也可以此为主数据
    merge m:1 make using autosize.dta
    

*-2.4 数据转换
    webuse reshape1, clear
    list
    reshape long inc ue, i(id) j(year) //j(year),year是生成的变量,原数据不存在此变量。
    list, sepby(id) //sepby(id)表输出结果按照id进行分隔
    reshape wide inc ue, i(id) j(year) //变回去,year是数据中的时间变量。
    webuse reshape3, clear
    preserve //暂存数据,便与后面恢复到初始状态
    rename inc80r inc80
    rename inc81r inc81
    rename inc82r inc82
    reshape long inc ue, i(id) j(year)
    list
    restore  //数据恢复到初始状态
    
    webuse reshape1, clear
    reshape long inc@r ue, i(id) j(year) //第二种方法。@用于指明时间数字,以避免stata出错
    describe //各变量的属性和名称
  
    
*-2.5 数据插值
    *-(1) 时间序列数据插值
    clear
    set obs 20     //设定观测值数量20
    set seed 10000 //设定种子为10000,以保证实验结果的可复制性
    gen id=_n      //设定id变量,等于_n,即系统自动生成的序号变量,从1开始
    gen year=_n+2000    //生成时间变量year,从2001-2020年
    gen x=runiform(5,6) //解释变量服从(5,6)上的堆积均匀分布
    gen e=rnormal()     //残差e服从标准的随机正态分布
    gen y=1+3*x+e       //因变量y是x的函数
    tsset year
    asdoc list
    reg y x //ols回归,对比分析
    
    ***************为演示插值方法,删除部分数据。本例删除y>18的值,同时将2001和2020年一头一尾数据清除,再进行插值,比较插值与真实值的差异***************
    gen y1=y
    replace y1=. if y>18 //大于18,则替换为缺失值
    replace y1=. if year==2001
    replace y1=. if year==2020
    sum //y1少了9个数据。最好缺失值低于5%
    
    ipolate y1 x, gen(y2) //线性内推,interpolation,如果把X换成t就是平均值插值
    ipolate y1 x, gen(y3) epolate //线性外推,即端点的预测问题
    list //比较y2,y3可以看到线性内推和外推的差异在于对顶点2020年数据的预测
    
    ***************比较预测之后的模型估计效果***************
    quietly reg y x
    outreg2 using xmm, word replace //如无命令,ssc install outreg2安装
    quietly reg y1 x
    outreg2 using xmm, word  
    quietly reg y2 x
    outreg2 using xmm, word 
    quietly reg y3 x
    outreg2 using xmm, word  
    
    *-(2) 面板数据插值
    *如果只是某个指标的观测值数据缺失,直接使用线性插值法即可。如果某一年(或其他时间计量单位)数据缺失,需先用tsfill命令补充相应年份,做成平衡面板数据再插值。
    *首先虚构一个面板数据
    clear all 
    local N=6 //设定研究对象个体数,local指设定局部宏变量
    local T=5 //设定研究的年份
    local NT=`N'*`T'
    set obs `NT'   //设定观测值数量
    set seed 10000 //设定种子为10000,方便试验的可重复性
    egen id=seq(), from(1) to (`N') block(`T') //使用egen调用等差数据函数seq(),即变量id从1到N=6,但每个id重复T=5,总共6*5=30个观测值
    sort id        //按id排序
    by id: gen year=_n+2010 //生成时间变量year,从2011-2015
    by id: gen x=runiform(5,6) //解释变量x服从(5,6)上的随机均匀分布
    by id: gen e=rnormal()     //残差e服从标准的随机正态分布
    by id: gen y=1+3*x+e       //设定函数
    xtset id year
    summarize
    
    ***************删除每个个体2013年的数据,同时将y>19的观测值替换为缺失值.***************
    drop if year==2013
    replace y=. if y>19
    list if _n<=15 //如果结果没出现表格,可加选项table
    tsfill, full   //先把年份补齐
    list
    ipolate y x, gen(y1) //线性内推插值
    ipolate y x, gen(y2) epolate //线性外推插值
    ipolate y year, gen(y3) //线性平均值插值,对y插值
    ipolate x year, gen(x1) //线性平均值插值,对x插值
    list, table
    
    by id: ipolate y year, gen(y4) epolate //线性外推法
    quietly xtreg y x, fe r 
    outreg2 using xmm, word replace //比较不插值和插值的结果差异
    quietly xtreg y1 x1, fe r
    outreg2 using xmm, word  
    quietly xtreg y2 x1, fe r
    outreg2 using xmm, word 
    quietly xtreg y3 x1, fe r
    outreg2 using xmm, word
    quietly xtreg y4 x1, fe r
    outreg2 using xmm, word
    
    tssmooth ma var1=x, w(2,0,2) //使用x变量的前两期和后两期进行移动平均
    replace x=var1 if x==.       //将x变量中的缺失值替换为var2中的移动平均值
    
*-2.6 图形绘制    
    use 2019countycross.dta, clear
    graph twoway (scatter gdp employ) (lfit gdp employ) //scatter散点图,lift线性拟合。拟合不准确,也没有提供具体的参数。
    regress gdp employ //进一步使用regress观察具体数值及显著性水平
    
    gen y=rnormal(2237134, 3026096) //生成均值2237134,标准差3026096的正态分布
    kdensity gdp
    graph save kgdp.gph, replace
    kdensity y 
    graph save ngdp.gph, replace
    graph combine kgdp.gph ngdp.gph 
    
    ***********取对数,优点1,更符合正态分布***********
    generate lgdp=log(gdp) //不服从正态分布,取对数
    kdensity lgdp          //观察lgdp分布特征
    
    quietly kdensity gdp   //quietly不显示结果
    graph save gdp.gph, replace //储存
    quietly kdensity lgdp 
    graph save lgdp.gph, replace
    graph combine gdp.gph lgdp.gph //放在一起对比
    
    ***********取对数,优点2,回归结果更加稳健***********
    generate lemploy=log(employ)
    quietly reg gdp employ
    outreg2 using jufe, word replace
    quietly reg lgdp lemploy
    outreg2 using jufe, word //放在一起比较
    
    ***********取对数,优点3,避免由于单位不一致带来的解释难题***********
    graph twoway (scatter lgdp lemploy)(lfit lgdp lemploy) //拟合线
    graph twoway (scatter lgdp lemploy)(lfit lgdp lemploy)(qfit lgdp lemploy) //增加二次拟合线
    generate lemploy2=lemploy^2
    reg lgdp lemploy lemploy2 

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值