请选择 进入手机版 | 继续访问电脑版
楼主: 风向南吹TP
8828 7

[程序分享] R语言分位数回归详尽步骤免费分享 [推广有奖]

  • 0关注
  • 7粉丝

硕士生

93%

还不是VIP/贵宾

-

威望
0
论坛币
2590 个
通用积分
41.0599
学术水平
10 点
热心指数
17 点
信用等级
9 点
经验
991 点
帖子
44
精华
0
在线时间
369 小时
注册时间
2015-11-4
最后登录
2024-3-15

风向南吹TP 学生认证  发表于 2018-9-10 16:54:26 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
  1. ####分位数回归####
  2. library(quantreg)  # 载入quantreg包
  3. data(engel)        # 加载quantreg包自带的数据集

  4. ##单变量回归
  5. #分位数回归(tau = 0.5)
  6. fit1 = rq(foodexp ~ income, tau = 0.5, data = engel)         
  7. r1 = resid(fit1)   # 得到残差序列,并赋值为变量r1
  8. c1 = coef(fit1)    # 得到模型的系数,并赋值给变量c1
  9. summary(fit1)      # 显示分位数回归的模型和系数
  10. summary(fit1, se = "boot") # 通过设置参数se,可以得到系数的假设检验

  11. #分位数回归(tau = 0.5、0.75)
  12. fit1 = rq(foodexp ~ income, tau = 0.5, data = engel)
  13. fit2 = rq(foodexp ~ income, tau = 0.75, data = engel)
  14. #模型比较
  15. anova(fit1,fit2)    #方差分析
  16. #画图比较分析
  17. plot(engel$foodexp , engel$income,pch=20, col = "#2E8B57",
  18.      main = "家庭收入与食品支出的分位数回归",xlab="食品支出",ylab="家庭收入")
  19. lines(fitted(fit1), engel$income,lwd=2, col = "#EEEE00")
  20. lines(fitted(fit2), engel$income,lwd=2, col = "#EE6363")
  21. legend("topright", c("tau=.5","tau=.75"), lty=c(1,1),
  22.        col=c("#EEEE00","#EE6363"))
  23. #不同分位点的回归比较
  24. fit = rq(foodexp ~ income,  tau = c(0.05,0.25,0.5,0.75,0.95), data = engel)
  25. plot( summary(fit))
  26. ##多变量回归
  27. data(barro)
  28. fit1 <- rq(y.net ~ lgdp2 + fse2 + gedy2 + Iy2 + gcony2, data = barro,tau=.25)
  29. fit2 <- rq(y.net ~ lgdp2 + fse2 + gedy2 + Iy2 + gcony2, data = barro,tau=.50)
  30. fit3 <- rq(y.net ~ lgdp2 + fse2 + gedy2 + Iy2 + gcony2, data = barro,tau=.75)
  31. # 替代方式 fit <- rq(y.net ~ lgdp2 + fse2 + gedy2 + Iy2 + gcony2, method = "fn", tau = 1:4/5, data = barro)
  32. anova(fit1,fit2,fit3)             # 不同分位点模型比较-方差分析
  33. anova(fit1,fit2,fit3,joint=FALSE)
  34. #不同分位点拟合曲线的比较
  35. plot(barro$y.net,pch=20, col = "#2E8B57",
  36.      main = "不同分位点拟合曲线的比较")
  37. lines(fitted(fit1),lwd=2, col = "#FF00FF")
  38. lines(fitted(fit2),lwd=2, col = "#EEEE00")
  39. lines(fitted(fit3),lwd=2, col = "#EE6363")
  40. legend("topright", c("tau=.25","tau=.50","tau=.75"), lty=c(1,1),
  41.        col=c( "#FF00FF","#EEEE00","#EE6363"))

  42. ##stata实例
  43. library(haven)
  44. grilic <- read_dta("G:/R_data/Project/Econometrics/stata learn/grilic.dta")
  45. grfm=lw~s+iq+expr+tenure+rns+smsa
  46. grolsfit=lm(grfm,data=grilic);summary(grolsfit) #basic OLS reg
  47. grrq0.5=rq(grfm,tau=0.5,data=grilic,model=TRUE)   #中位数回归
  48. summary(grrq0.5);summary(grrq0.5, se = "boot")
  49. grrq0.1=rq(grfm,tau=0.1,data=grilic,model=TRUE)  #0.25分位数回归
  50. summary(grrq0.1);summary(grrq0.1, se = "boot")
  51. grrq0.9=rq(grfm,tau=0.9,data=grilic,model=TRUE)  #0.75分位数回归
  52. summary(grrq0.9);summary(grrq0.9, se = "boot")
  53. anova(grrq0.1,grrq0.5)  #检验不同分位数回归估计值是否相同,零假设系数相同
  54. anova(grrq0.1,grrq0.5,grrq0.9)  #比较不同分位数系数是否相同

  55. taus <- c(.05,.1,.25,.75,.9,.95)
  56. grrq=rq(grfm,tau=taus,data=grilic,model=TRUE)  #同时回归多个分位数回归
  57. summary(grrq,se="boot", seed = 500000)
  58. plot(summary(grrq,se="boot", seed = 520))

  59. library(uqr)
  60. data(trust);View(trust)
  61. formula=Trust_in_the_ECB~Trust_in_the_EU+Trust_in_National_Government
  62. cre=~Trust_in_the_EU+Trust_in_National_Government
  63. rif=urq(formula,data=trust,cre=cre,id="countryname")
  64. rif$coefficients
复制代码
  1. ####分位数回归####
  2. library(quantreg)  # 载入quantreg包
  3. data(engel)        # 加载quantreg包自带的数据集

  4. ##单变量回归
  5. #分位数回归(tau = 0.5)
  6. fit1 = rq(foodexp ~ income, tau = 0.5, data = engel)         
  7. r1 = resid(fit1)   # 得到残差序列,并赋值为变量r1
  8. c1 = coef(fit1)    # 得到模型的系数,并赋值给变量c1
  9. summary(fit1)      # 显示分位数回归的模型和系数
  10. summary(fit1, se = "boot") # 通过设置参数se,可以得到系数的假设检验

  11. #分位数回归(tau = 0.5、0.75)
  12. fit1 = rq(foodexp ~ income, tau = 0.5, data = engel)
  13. fit2 = rq(foodexp ~ income, tau = 0.75, data = engel)
  14. #模型比较
  15. anova(fit1,fit2)    #方差分析
  16. #画图比较分析
  17. plot(engel$foodexp , engel$income,pch=20, col = "#2E8B57",
  18.      main = "家庭收入与食品支出的分位数回归",xlab="食品支出",ylab="家庭收入")
  19. lines(fitted(fit1), engel$income,lwd=2, col = "#EEEE00")
  20. lines(fitted(fit2), engel$income,lwd=2, col = "#EE6363")
  21. legend("topright", c("tau=.5","tau=.75"), lty=c(1,1),
  22.        col=c("#EEEE00","#EE6363"))
  23. #不同分位点的回归比较
  24. fit = rq(foodexp ~ income,  tau = c(0.05,0.25,0.5,0.75,0.95), data = engel)
  25. plot( summary(fit))
  26. ##多变量回归
  27. data(barro)
  28. fit1 <- rq(y.net ~ lgdp2 + fse2 + gedy2 + Iy2 + gcony2, data = barro,tau=.25)
  29. fit2 <- rq(y.net ~ lgdp2 + fse2 + gedy2 + Iy2 + gcony2, data = barro,tau=.50)
  30. fit3 <- rq(y.net ~ lgdp2 + fse2 + gedy2 + Iy2 + gcony2, data = barro,tau=.75)
  31. # 替代方式 fit <- rq(y.net ~ lgdp2 + fse2 + gedy2 + Iy2 + gcony2, method = "fn", tau = 1:4/5, data = barro)
  32. anova(fit1,fit2,fit3)             # 不同分位点模型比较-方差分析
  33. anova(fit1,fit2,fit3,joint=FALSE)
  34. #不同分位点拟合曲线的比较
  35. plot(barro$y.net,pch=20, col = "#2E8B57",
  36.      main = "不同分位点拟合曲线的比较")
  37. lines(fitted(fit1),lwd=2, col = "#FF00FF")
  38. lines(fitted(fit2),lwd=2, col = "#EEEE00")
  39. lines(fitted(fit3),lwd=2, col = "#EE6363")
  40. legend("topright", c("tau=.25","tau=.50","tau=.75"), lty=c(1,1),
  41.        col=c( "#FF00FF","#EEEE00","#EE6363"))

  42. ##stata实例
  43. library(haven)
  44. grilic <- read_dta("G:/R_data/Project/Econometrics/stata learn/grilic.dta")
  45. grfm=lw~s+iq+expr+tenure+rns+smsa
  46. grolsfit=lm(grfm,data=grilic);summary(grolsfit) #basic OLS reg
  47. grrq0.5=rq(grfm,tau=0.5,data=grilic,model=TRUE)   #中位数回归
  48. summary(grrq0.5);summary(grrq0.5, se = "boot")
  49. grrq0.1=rq(grfm,tau=0.1,data=grilic,model=TRUE)  #0.25分位数回归
  50. summary(grrq0.1);summary(grrq0.1, se = "boot")
  51. grrq0.9=rq(grfm,tau=0.9,data=grilic,model=TRUE)  #0.75分位数回归
  52. summary(grrq0.9);summary(grrq0.9, se = "boot")
  53. anova(grrq0.1,grrq0.5)  #检验不同分位数回归估计值是否相同,零假设系数相同
  54. anova(grrq0.1,grrq0.5,grrq0.9)  #比较不同分位数系数是否相同

  55. taus <- c(.05,.1,.25,.75,.9,.95)
  56. grrq=rq(grfm,tau=taus,data=grilic,model=TRUE)  #同时回归多个分位数回归
  57. summary(grrq,se="boot", seed = 500000)
  58. plot(summary(grrq,se="boot", seed = 520))

  59. library(uqr)
  60. data(trust);View(trust)
  61. formula=Trust_in_the_ECB~Trust_in_the_EU+Trust_in_National_Government
  62. cre=~Trust_in_the_EU+Trust_in_National_Government
  63. rif=urq(formula,data=trust,cre=cre,id="countryname")
  64. rif$coefficients
复制代码
第二部分数据为《陈强高计stata》中对应章节数据数据

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


已有 1 人评分学术水平 热心指数 信用等级 收起 理由
HanghangKE + 5 + 5 + 5 精彩帖子

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

本帖被以下文库推荐

hifinecon 发表于 2018-9-10 19:05:09 |显示全部楼层 |坛友微信交流群
thank you for your sharing

使用道具

金哥123 学生认证  发表于 2018-9-10 21:24:55 |显示全部楼层 |坛友微信交流群
感谢分享

使用道具

liaoqingzhong 发表于 2018-10-28 14:11:14 |显示全部楼层 |坛友微信交流群
楼主好,我想问一下,动态面板数据分位数回归的程序是怎么样的呢?

使用道具

风向南吹TP 学生认证  发表于 2018-10-31 13:32:31 |显示全部楼层 |坛友微信交流群
liaoqingzhong 发表于 2018-10-28 14:11
楼主好,我想问一下,动态面板数据分位数回归的程序是怎么样的呢?
不好意思,面板分位数我都还一知半解,更别提动态的了,

使用道具

benyangyang 发表于 2019-5-27 09:06:39 |显示全部楼层 |坛友微信交流群
谢谢分享

使用道具

mzvke 发表于 2019-10-27 08:55:02 |显示全部楼层 |坛友微信交流群
请问下控制变量在哪儿呢?

使用道具

楼主,我想请问一下输入实际数据时,出现<simpleError in is(obj, "ore.frame"): 没有"is"这个函数>是怎么回事?

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 17:25