- 阅读权限
- 255
- 威望
- 0 级
- 论坛币
- 2592 个
- 通用积分
- 41.1199
- 学术水平
- 10 点
- 热心指数
- 17 点
- 信用等级
- 9 点
- 经验
- 991 点
- 帖子
- 44
- 精华
- 0
- 在线时间
- 370 小时
- 注册时间
- 2015-11-4
- 最后登录
- 2024-4-16
|
- library(sp);library(Matrix);library(spdep);library(haven)
- #空间相关性检验
- columbusswm <- read_dta("G:/R_data/Project/Econometrics/stata learn/columbusswm.dta")
- columbusdata <- read_dta("G:/R_data/Project/Econometrics/stata learn/columbusdata.dta")
- colww <- mat2listw(as.matrix(columbusswm),style="W") ##生成空间权重矩阵
- moran.test(as.matrix(columbusdata)[,4],listw=colww) ##全局空间自相关检验,原假设不存在空间自相关
- moran.plot(as.matrix(columbusdata)[,4],listw=colww,xlab="Crime",ylab="Crimae.lag")
- localmoran(as.matrix(columbusdata)[,4],listw=colww) ##局部空间自相关检验,尚未解决
- colfm=crime~hoval+income
- cololsfit=lm(colfm,data=columbusdata);summary(cololsfit) #OLS 回归
- moran.test(as.matrix(cololsfit$residuals),listw=colww) #模型滞后、误差项空间相关性检验,尚未解决
- moran.mc(cololsfit$residuals, colww, 999) #蒙特卡洛MoranI检验
- lm.morantest(cololsfit,listw=colww) #与上两式结果基本相同
- res <- lm.LMtests(cololsfit, listw = colww, test = "all")
- tres <- t(sapply(res, function(x) c(x$statistic, x$parameter,+ x$p.value)))
- colnames(tres) <- c("Statistic", "df", "p-value")
- printCoefmat(tres)
- #截面空间回归
- collag1 = lagsarlm(colfm, data=columbusdata, colww,type="lag");summary(collag1) #空间滞后模型
- collag2 = lagsarlm(colfm, data=columbusdata, colww,type="mixed");summary(collag2) #空间混合模型,与杜宾模型基本一致
- collag3 = lagsarlm(colfm, data=columbusdata, colww,type="Durbin");summary(collag3) #空间杜宾模型
- colgm <- GMerrorsar(colfm, data =columbusdata, listw = colww);summary(colgm)
- impacts(collag1,listw=colww)
- impacts(collag2,listw=colww)
- impacts(collag3,listw=colww)
- colsem = errorsarlm(colfm, data=columbusdata, colww);summary(colsem) #空间误差模型
- collag_2SLS <- stsls(colfm, data =columbusdata, listw = colww);summary(collag_2SLS) #两阶段空间滞后模型
- collag_2SL_robust <- stsls(colfm, data =columbusdata,listw=colww,robust = TRUE);summary(collag_2SL_robust)
- #空间面板回归
- library(splm);library(plm)
- data("usaww");proww=mat2listw(usaww,style="W")
- product <- read_dta("G:/R_data/Project/Econometrics/stata learn/product.dta")
- product=pdata.frame(product,index = c("state", "year"))
- profm=log(gsp)~log(pcap)+log(pc)+log(emp)+unemp
- proplm=plm(profm,data=product,model="within",effect="individual");summary(proplm)
- prosplm=spml(profm,data=product,listw=proww);summary(prosplm)
- prosplm2=spml(profm,data=product,listw=proww,model="within",effect="individual");summary(prosplm2)
- prosplm3=spml(profm,data=product,listw=proww,model="within",effect="individual",lag=TRUE);summary(prosplm3)
- prosplm4=spml(profm,data=product,listw=proww,model="random",effect="individual",spatial.error=="none");summary(prosplm4)
- impacts(prosplm4,listw=proww)
- impac1 <- impacts(prosplm3, listw = mat2listw(usaww, style = "W"),time=17)
- impac1
- test.hausman=sphtest(prosplm3,prosplm4)
- test.hausman
- #SDM模型
- #空间杜宾模型
- profm_SDM=log(gsp)~log(pcap)+log(pc)+log(emp)+unemp+slag(log(pcap), listw= proww) + slag(log(pc), listw = proww)+slag(log(emp), listw = proww)+slag(unemp, listw = proww)
- prosplm_SDM1=spml(profm_SDM,data=product,listw=proww,model="random",effect="individual",spatial.error=="none",lag=TRUE);summary(prosplm_SDM1)
- impac2 <- impacts(prosplm_SDM1, listw = mat2listw(usaww, style = "W"),time=17)
- impac2
- test1 <- sphtest(x = fm, data = Produc, listw = mat2listw(usaww),spatial.model = "error", method = "GM") #空间回归huasman检验
复制代码自己写的R语言空间回归代码,用的数据是陈强stata书对应章节中的数据,结果基本相同。目前还在探索,不一定完全正确,分享交流一下,有建议或者问题可以加我QQ1198442891,大神勿喷
|
-
总评分: 论坛币 + 5
学术水平 + 1
热心指数 + 1
信用等级 + 1
查看全部评分
|