2024年5月25日发(作者:阙承志)
__________________________________________________
2、不同分位点拟合曲线的比较
# 散点图
attach(engel) # 打开engel数据集,直接运行其中的列名,就可以调用相应列
plot(income,foodexp,cex=0.25,type="n", # 画图,说明①
xlab="Household Income", ylab="Food Expenditure")
points(income,foodexp,cex=0.5,col="blue") # 添加点,点的大小为0.5
abline( rq(foodexp ~ income, tau=0.5), col="blue" ) # 画中位数回归的拟合直线,颜色蓝
abline( lm(foodexp ~ income), lty = 2, col="red" ) # 画普通最小二乘法拟合直线,颜色红
taus = c(0.05, 0.1, 0.25, 0.75, 0.9, 0.95)
for(i in 1:length(taus)){ # 绘制不同分位点下的拟合直线,颜色为灰色
abline( rq(foodexp ~ income, tau=taus[i]), col="gray" )
}
detach(engel)
3、穷人和富人的消费分布比较
# 比较穷人(收入在10%分位点的那个人)和富人(收入在90%分位点的那个人)的估计
结果
# rq函数中,tau不在[0,1]时,表示按最细的分位点划分方式得到分位点序列
z = rq(foodexp ~ income, tau=-1)
z$sol # 这里包含了每个分位点下的系数估计结果
= quantile(income, 0.1) # 10%分位点的收入
= quantile(income, 0.9) # 90%分位点的收入
ps = z$sol[1,] # 每个分位点的tau值
= c( c(1,) %*% z$sol[4:5,] ) # 10%分位点的收入的消费估计值
= c( c(1,) %*% z$sol[4:5,] ) # 90%分位点的收入的消费估计值
windows(, 10,5)
__________________________________________________
__________________________________________________
par(mfrow=c(1,2)) # 把绘图区域划分为一行两列
plot(c(ps,ps),c(,),type="n", # type=”n”表示初始化图形区域,但不画图
xlab=expression(tau), ylab="quantile")
plot(stepfun(ps,c([1],)), =F,
add=T)
plot(stepfun(ps,c([1],)), =F,
add=T, ="gray", ="gray")
= ( c(0,diff(ps)) + c(diff(ps),0) )/2
ap = akj(, z=, p=)
ar = akj(, z=, p=)
plot(c(,), c(ap$dens, ar$dens),
type="n", xlab="Food Expenditure", ylab="Density")
lines(,ar$dens,col="gray")
lines(,ap$dens,col="black")
legend("topright", c("poor","rich"), lty=c(1,1),
col=c("black","gray"))
上图表示收入(income)为10%分位点处(poor,穷人)和90%分位点处(rich,富人)的
食品支出的比较。从左图可以发现,对于穷人而言,在不同分位点估计的食品消费差别不大。
而对于富人而言,在不同分位点对食品消费的差别比较大。右图反应了穷人和富人的食品消
费分布曲线。穷人的食品消费集中于400左右,比较陡峭;而富人的消费支出集中于800
到1200之间,比较分散。
(四)模型比较
# 比较不同分位点下,收入对食品支出的影响机制是否相同
fit1 = rq(foodexp ~ income, tau = 0.25)
fit2 = rq(foodexp ~ income, tau = 0.5)
fit3 = rq(foodexp ~ income, tau = 0.75)
anova(fit1,fit2,fit3)
结果:
__________________________________________________
2024年5月25日发(作者:阙承志)
__________________________________________________
2、不同分位点拟合曲线的比较
# 散点图
attach(engel) # 打开engel数据集,直接运行其中的列名,就可以调用相应列
plot(income,foodexp,cex=0.25,type="n", # 画图,说明①
xlab="Household Income", ylab="Food Expenditure")
points(income,foodexp,cex=0.5,col="blue") # 添加点,点的大小为0.5
abline( rq(foodexp ~ income, tau=0.5), col="blue" ) # 画中位数回归的拟合直线,颜色蓝
abline( lm(foodexp ~ income), lty = 2, col="red" ) # 画普通最小二乘法拟合直线,颜色红
taus = c(0.05, 0.1, 0.25, 0.75, 0.9, 0.95)
for(i in 1:length(taus)){ # 绘制不同分位点下的拟合直线,颜色为灰色
abline( rq(foodexp ~ income, tau=taus[i]), col="gray" )
}
detach(engel)
3、穷人和富人的消费分布比较
# 比较穷人(收入在10%分位点的那个人)和富人(收入在90%分位点的那个人)的估计
结果
# rq函数中,tau不在[0,1]时,表示按最细的分位点划分方式得到分位点序列
z = rq(foodexp ~ income, tau=-1)
z$sol # 这里包含了每个分位点下的系数估计结果
= quantile(income, 0.1) # 10%分位点的收入
= quantile(income, 0.9) # 90%分位点的收入
ps = z$sol[1,] # 每个分位点的tau值
= c( c(1,) %*% z$sol[4:5,] ) # 10%分位点的收入的消费估计值
= c( c(1,) %*% z$sol[4:5,] ) # 90%分位点的收入的消费估计值
windows(, 10,5)
__________________________________________________
__________________________________________________
par(mfrow=c(1,2)) # 把绘图区域划分为一行两列
plot(c(ps,ps),c(,),type="n", # type=”n”表示初始化图形区域,但不画图
xlab=expression(tau), ylab="quantile")
plot(stepfun(ps,c([1],)), =F,
add=T)
plot(stepfun(ps,c([1],)), =F,
add=T, ="gray", ="gray")
= ( c(0,diff(ps)) + c(diff(ps),0) )/2
ap = akj(, z=, p=)
ar = akj(, z=, p=)
plot(c(,), c(ap$dens, ar$dens),
type="n", xlab="Food Expenditure", ylab="Density")
lines(,ar$dens,col="gray")
lines(,ap$dens,col="black")
legend("topright", c("poor","rich"), lty=c(1,1),
col=c("black","gray"))
上图表示收入(income)为10%分位点处(poor,穷人)和90%分位点处(rich,富人)的
食品支出的比较。从左图可以发现,对于穷人而言,在不同分位点估计的食品消费差别不大。
而对于富人而言,在不同分位点对食品消费的差别比较大。右图反应了穷人和富人的食品消
费分布曲线。穷人的食品消费集中于400左右,比较陡峭;而富人的消费支出集中于800
到1200之间,比较分散。
(四)模型比较
# 比较不同分位点下,收入对食品支出的影响机制是否相同
fit1 = rq(foodexp ~ income, tau = 0.25)
fit2 = rq(foodexp ~ income, tau = 0.5)
fit3 = rq(foodexp ~ income, tau = 0.75)
anova(fit1,fit2,fit3)
结果:
__________________________________________________