飞道的博客

R语言大作业(全国2000-2019年人口各项数据分析)

841人阅读  评论(0)

数据是统计局下载的,为期末大作业做准备。
数据要存成csv模式,好导入到RGui中

年份,人口出生率,人口死亡率,人口自然增长率
2000,1.403,0.645,0.758
2001,1.338,0.643,0.695
2002,1.286,0.641,0.645
2003,1.241,0.64,0.601
2004,1.229,0.642,0.587
2005,1.24,0.651,0.589
2006,1.209,0.681,0.528
2007,1.21,0.693,0.517
2008,1.214,0.706,0.508
2009,1.195,0.708,0.487
2010,1.19,0.711,0.479
2011,1.193,0.714,0.479
2012,1.21,0.715,0.495
2013,1.208,0.716,0.492
2014,1.237,0.716,0.521
2015,1.207,0.711,0.496
2016,1.295,0.709,0.586
2017,1.243,0.711,0.532
2018,1.094,0.713,0.381
2019,1.048,0.714,0.334
(数据自行复制吧)

一、任务目的:

综合运用本学期所学统计学理论知识、R语言编程技巧和数据分析案例等内容,根据个人兴趣点,自行收集数据、整理数据、展示数据、分析数据,挖掘数据价值。能够正确合理使用R语言实现数据分析,并将此案例整理成数据分析报告。

二、任务要求:

1.数据描述性统计(平均数、标准差、中位数、偏态程度),体现数据特征,并对重要数据变量进行图表展示。
2.数据分析:明确通过数据分析要解决什么问题,运用什么分析思路、分析方法和模型,并最终得出总结性的结论或效果。
3.分析过程中,根据数据特征,解释为什么使用某某函数进行运算求解,并对运算得到的相关参数进行解读。
例如:参数估计时,数据总体服从正态分布σ未知,样本量<30,属小样本,样本均值经标准化后服从自己度为n-1的t分布,故采用t.test函数……
假设检验时,需写明具体“假设”、结论及相应代码。
建模时,需明确具体步骤,对建模参数进行解读

数据描述性统计

绘制带有箱线图、轴须线和密度估计的直方图

核密度图


人口出生率:

人口死亡率:

人口自然增长率:

时间序列图


数据分析

  1. 确定变量间的关系
    首先出生率和死亡率:

    人口出生率下降,人口死亡率在增长,二者的观测点分布在一条直线的周围,因而具有负线性关系。两个箱线图显示,出生率和死亡率不是对称分布。从拟合的曲线来看,有一定的线性特征,可以认为两个变量有线性关系。
    其次是出生率和自然增长率
    代码同上

    人口出生率增加,人口自然增长率也在增长,二者的观测点分布在一条直线的周围,因而具有正的线性相关关系。两个箱线图显示,出生率和死亡率有一定的对称分布。从拟合的曲线来看,非线性特征不明显,显示两个变量有线性关系。
    最后是死亡率和自然增长率

    人口死亡率减少,人口自然增长率在增长,二者的观测点分布在一条直线的周围,因而具有负的线性相关关系。两个箱线图显示,出生率和死亡率不是对称分布。从拟合的曲线来看,线性特征不是很明显,显示两个变量没有较强线性关系。
  2. 有关于相关系数的计算与检验
  3. 回归模型与回归方程

arrows 函数用来在一张图表上添加箭头,只需要分别指定起始坐标和终止坐标,就可以添加箭头了,还可以通过一些属性对箭头的形状,大小进行调整.``
xo, yo 指定起始点的x和y坐标,x1, y1 指定终止点的x和y坐标

arrows(x0 = 1, y0 = 1, x1 = 4, y1 = 4)

x0, y0,x1,y1 支持一次设置多个值,同时画多个箭头

arrows(x0 = c(1, 1),  y0 = c(1, 2),  x1 = c(4, 4), y1 = c(4, 5))

length : 该参数一次只能设置一个值,默认值为0.25, 为了调整不同箭头的大小,建议分别设置

par(mfrow = c(1,3))
plot(1:5, 1:5, xlim = c(0,6), ylim = c (0,6), type = "n", main = "length = 0.1")
arrows(x0 = 1, y0 = 1, x1 = 4, y1 = 4, length = 0.1)
plot(1:5, 1:5, xlim = c(0,6), ylim = c (0,6), type = "n", main = "length = 0.5")
arrows(x0 = 1, y0 = 1, x1 = 4, y1 = 4, length = 0.5)
plot(1:5, 1:5, xlim = c(0,6), ylim = c (0,6), type = "n", main = "length = 1")
arrows(x0 = 1, y0 = 1, x1 = 4, y1 = 4, length = 1)

效果图
code : 调整箭头的类型,一共有1,2,3,4 共四种类型,该参数一次只能设置一个值

par(mfrow = c(1,3))
plot(1:5, 1:5, xlim = c(0,6), ylim = c (0,6), type = "n", main = "code = 1")
arrows(x0 = 1, y0 = 1, x1 = 4, y1 = 4, code = 1)
plot(1:5, 1:5, xlim = c(0,6), ylim = c (0,6), type = "n", main = "code = 2")
arrows(x0 = 1, y0 = 1, x1 = 4, y1 = 4, code = 2)
plot(1:5, 1:5, xlim = c(0,6), ylim = c (0,6), type = "n", main = "code = 3")
arrows(x0 = 1, y0 = 1, x1 = 4, y1 = 4, code = 3)

效果图
angle : 设置箭头的角度,默认值是45,该参数一次只能设置一个值

par(mfrow = c(1,3))
plot(1:5, 1:5, xlim = c(0,6), ylim = c (0,6), type = "n", main = "angle = 15")
arrows(x0 = 1, y0 = 1, x1 = 4, y1 = 4, length = 0.5, angle = 15)
plot(1:5, 1:5, xlim = c(0,6), ylim = c (0,6), type = "n", main = "angle = 45")
arrows(x0 = 1, y0 = 1, x1 = 4, y1 = 4, length = 0.5, angle = 45)
plot(1:5, 1:5, xlim = c(0,6), ylim = c (0,6), type = "n", main = "angle = 60")
arrows(x0 = 1, y0 = 1, x1 = 4, y1 = 4, length = 0.5, angle = 60)

效果图
除了上面的针对arrows 的特殊参数之外,也支持一些通用的参数,col , lty ,lwd 等

出生率和自然增长率

死亡率和自然增长率

模型的拟合优度(以出生率和死亡率为例)


出生率和死亡率的决定系数R^2=0.3447=34.47%表示在人口出生率的取值的总误差中有34.47%可以由人口出生率与死亡率之间的线性关系来解释,可见模型的拟合程度较低

残差的标准误

出生率和死亡率的残差标准误是0.06245,表示用死亡率来预测出生率时平均的预测误差为6.245%

模型显著检验——线性关系检验(F检验)

#H0:不显著;H1:显著
#F=9.469 p=0.006496<0.05拒绝原假设,线性关系显著

回归系数检验与推断

出生率和死亡率
H0:β1=0(自变量对因变量的影响不显著);H1:β2≠0(显著)
t=-3.077 p=0.0065<0.05,拒绝原假设,自变量对因变量的影响显著

利用回归方程进行预测

#计算点预测值(pre_model)、置信区间(con_int)和预测区间(pre_int)
model<-lm(人口出生率~人口死亡率,data=table)
x0<-table$人口死亡率
pre_model<-predict(model)
con_int<-predict(model,data.frame(人口死亡率=x0),interval="confidence",level=0.95)
pre_int<-predict(model,data.frame(人口死亡率=x0),interval="prediction",level=0.95)
pre<-data.frame(人口出生率=table$人口出生率,点预测值=pre_model,置信下限=con_int[,2],置信上限=con_int[,3],预测下限=pre_int[,2],预测上限=pre_int[,3])
pre

回归模型诊断

#计算预测值(pre)、残差(res)和标准化残差(zre)(出生率,死亡率)
model<-lm(人口出生率~人口死亡率,data=table)
pre<-fitted(model)
res<-residuals(model)
zre<-model$residuals/(sqrt(deviance(model)/df.residual(model)))
mysummary<-data.frame(人口出生率=table$人口出生率,点预测值=pre,残差=res,标准化残差=zre)
mysummary

检验线性关系

#成分残差图
model_1<-lm(人口出生率~人口死亡率,data=table)
library(car)
par(mai=c(.7,.7,.1,.1),cex=.8)
crPlots(model_1)#线性
#检验正态性
par(mfrow=c(2,2),cex=0.8,cex.main=0.7)
plot(model_1)
#检验方差齐性
library(car)
ncvTest(model_1)
#绘制散布—水平图
spreadLevelPlot(model_1)
#检验残差独立性
library(car)
durbinWatsonTest(model_1)


残差成分图,横坐标是自变量的实际观测值,纵坐标是因变量与残差之和,从拟合的曲线可以看出,人口出生率和死亡率没有过于明显的非线性模式,说明二者的线性关系假定成立。

右上角的图是标准化残差的正太Q-Q图,用于检验残差的正态性假定,可以看出,各个点大部分都在直线周围随机分布,没有固定模制,因此,出生率和死亡率的线性模型中,ε正态性的假定基本成立。
左上角的图是残差值与拟合值图
左下角的图是位置尺度图
右下角图是残差与杠杆图,用于鉴别样本数据是否有离群点、高杠杆点和强影响点 。

方差齐性检验的原假设为误差项满足方差齐性p=0.98995接受原假设,可以认为满足方差齐性。

该图非线性特征明显,所以不满足方差齐性的假定

原假设为残差无自相关 p=0,拒绝原假设,显示残差有自相关


转载:https://blog.csdn.net/azheya/article/details/106790917
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场