概述
*==============================================================================*
*===========================第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
最后
以上就是温婉哑铃为你收集整理的《傻瓜计量经济学与stata应用》第二章do文件,记得把数据考到当前目录或带上路径,否则可能无法打开的全部内容,希望文章能够帮你解决《傻瓜计量经济学与stata应用》第二章do文件,记得把数据考到当前目录或带上路径,否则可能无法打开所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复