y,X1,X2,X3 分别表示第 t 年各项税收收入(亿元),某国生产总值GDP(亿元),财政支出(亿元)和商品零售价格指数(%).

(1) 建立线性模型

① 自己编写函数:

> library(openxlsx)
> data = read.xlsx("22_data.xlsx",sheet = 1)
> x = data[,-c(1,2)]
> x = cbind(rep(1,17),x)
> x_mat = as.matrix(x)
> y =matrix(data[,2],ncol = 1)
> res = solve(t(x_mat)%*%x_mat)%*%t(x_mat)%*%y
> res
[,1]
rep(1, 17) 19412.8597818
X1 0.2679605
X2 -0.2874013
X3 -297.3653736

所以各参数的估计值分别为

② lm函数

> lm(y~x_mat)

Call:
lm(formula = y ~ x_mat) Coefficients:
(Intercept) x_matrep(1, 17) x_matX1
19412.859781545 NA 0.267960511
x_matX2 x_matX3
-0.287401287 -297.365373557

于是各参数的估计值分别为

这两个方法的结果是一样的。

(2)要求实验报告中画出矩阵散点图,给出参数的点估计、区间估计、t检验值、判定系数和模型F检验的方差分析表

绘制矩阵散点图。

library(graphics)
pairs(data[,-1]pch = 21,bg = c('red','green3','blue'))
# pch参数是控制点的形状,bg是控制点的颜色

下面代码给出参数的点估计,t检验值,判定系数

> summary(lm(y~x_mat+1))

Call:
lm(formula = y ~ x_mat + 1) #调用 Residuals: #残差统计量,残差第一四分位数(1Q)和第三分位数(3Q)有大约相同的幅度,意味着有较对称的钟形分布
Min 1Q Median 3Q Max
-4397.9 -1102.4 153.8 1184.4 2934.6 Coefficients: (1 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.941e+04 3.524e+04 0.551 0.591
x_matrep(1, 17) NA NA NA NA
x_matX1 2.680e-01 4.466e-02 6.000 4.45e-05 ***
x_matX2 -2.874e-01 1.668e-01 -1.723 0.109
x_matX3 -2.974e+02 3.688e+02 -0.806 0.435
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#标记为Estimate的列包含由最小二乘法计算出来的估计回归系数。
#标记为Std.Error的列是估计的回归系数的标准误差。
#从理论上说,如果一个变量的系数是0,那么该变量将毫无贡献。然而,这里显示的系数只是估计,它们不会正好为0.
#因此,我们不禁会问:从统计的角度而言,真正的系数为0的可能性有多大?这是t统计量和P值的目的,在汇总中被标记为t value和Pr(>|t|)
#P值估计系数不显著的可能性,有较大P值的变量是可以从模型中移除的候选变量 Residual standard error: 2013 on 13 degrees of freedom
Multiple R-squared: 0.9982, Adjusted R-squared: 0.9977
F-statistic: 2348 on 3 and 13 DF, p-value: < 2.2e-16 #Residual standard error 表示残差的标准差,F-statistic 表示F的统计量

  区间估计?方差分析表?

#参数的区间估计
fm = lm(y~x_mat)
confint(fm,level = 0.95)
anova(fm) #方差分析

(3)保留模型中线性关系显著的预测变量确定最后的模型,并利用R软件中的"predict"语句预测2017年的税收收入

根据回归分析结果,只有变量X1具有显著性。所以模型中仅保留变量X1。

构造模型:

x_mat = cbind(rep(1,17),data[,3])
y = data[,2]
res = lm(y~x_mat)
res
> res Call:
lm(formula = y ~ x_mat) Coefficients:
(Intercept) x_mat1 x_mat2
-6213.0189 NA 0.1915

该模型为:Y = -6213.0189 + 0.1915 X1

接下来预测2017年的税收收入,先根据数据data对 t 和 y 之间的关系进行回归分析

t = data[,1]
y = data[,2]
res = lm(y~t)
res > res Call:
lm(formula = y ~ t) Coefficients:
(Intercept) t
-16428607 8213

所以 t 与 y 的关系为:y  = -16428607 + 8213 t

预测 2017 年的税收收入:

> newdata = data.frame(t = 2017)
> pre = predict(res,newdata,interval = "prediction",level = 0.95)
> pre
fit lwr upr
1 136337.8 116018.1 156657.4

  

(4)方差齐性检验,正态性检验,误差相关性的DW检验

rm(list = ls())
library(openxlsx)
data = read.xlsx("22_data.xlsx",sheet = 3)
data
attach(data) #执行此命令之后,直接用列名引用数据
fm = lm(y~X1+X2+X3)
summary(fm)

  

#残差图:方差齐性检验
ei = resid(fm) #残差
X = cbind(1,as.matrix(data[,3:5])) #创建设计阵,注意as.matrix的对象
t = ti(ei,X) #外部学生化残差
r = ri(ei,X) #学生化残差
plot(fitted(fm),t,xlab = "y估计值",ylab = "学生化残差",ylim = c(-4,4))
abline(h = 0)

  

1)上图表示,围绕x轴上下波动,不是均匀分布,方差不齐,但是这个残差图代表什么呢?
2)第17个点是异常点

#正态概率图:正态性检验
plot_ZP(t)

  

除了17号点,其他的点基本在一条直线。

plot_ZP(t[1:16])

  

#误差相关性的DW检验
library(lmtest)
dw = dwtest(fm) #DW检验函数

> dw

Durbin-Watson test

data: fm
DW = 0.90086, p-value = 0.0006763
alternative hypothesis: true autocorrelation is greater than 0

p值远小于0.05,拒绝原假设ρ=0,所以误差是自相关的

plot(ei) #绘制时间序列中的残差图
abline(h = 0)

  

图像表明:误差是正自相关的。
正自相关:如果前一个残差大于0,那么后一个残差大于0的概率较大
负自相关:富国前一个残差大于0,那么后一个残差小于0的概率较大

(4)强影响点分析,异常点分析

#强影响点分析
#方法:手指律、刀切法、cook距离、deffits
#influence.measures(fm)
influence.measures(fm)
# 函数得到的回归诊断共有9列,
# 其中1,2,3,4列是dfbetas值(对应常数与变量x),
# 第5列是dffits的准则值,
# 第6列是covratio的准则值,
# 第7列是cook值,第8列是帽子值(高杠杆值),
# 第9列是影响点的标记,
# inf表明16,17号是强影响点。

  

#cook距离判断强影响点
res = cooks.distance(fm)
> res[res>4/(17-3-1)]
17
1.266196
> #17号是强影响点

  

#异常点
#方法:dfbetas、F统计量、outlierTest()
library(car)
outlierTest(fm)
    rstudent unadjusted p-value Bonferroni p
17 -4.277398 0.0010739 0.018257

Bonferroni p < 0.05 , 结果显示17号点是异常点

  

#使用influencePlot()将异常点绘入图中
influencePlot(fm)

  

#F统计量page88
calcu_F = function(p,r) #p回归参数个数,r学生化残差
{
n = length(r)
ans = (n-p-2)*(r**2)/(n-p-1-r**2)
return(ans)
}
ff = calcu_F(3,r)
#与自由度为1,n-p-2,显著性水平为α的F值比较
df_val = qf(1-0.05,1,12)
ff[ff>df_val] #检验显著性
17
18.29613

  

(6)模型失拟检测

模型失拟检测
1.有重复值用失拟检测的正规检验《线性回归导论》
2.无重复值
1)当模型的预测变量个数多余1时,考虑偏残差法
2)无论预测变量个数,近邻点估计纯误差方法都可以

# 偏残差:
data
beta = coef(fm)
beta1 = beta[2]
beta2 = beta[3]
beta3 = beta[4]
#第一个预测变量:
par(mfrow = c(2,2))
cancha1 = ei + beta1*(data$X1)
plot(data$X1,cancha1)
#第二个预测变量:
cancha2 = ei + beta2*(data$X2)
plot(data$X2,cancha2)
#第三个预测变量:
cancha3 = ei + beta3*(data$X3)
plot(data$X3,cancha3)
#通过图像,第三个预测变量不

R语言 线性回归分析实例 《回归分析与线性统计模型》page72的更多相关文章

  1. R语言各种假设检验实例整理(常用)

    一.正态分布参数检验 例1. 某种原件的寿命X(以小时计)服从正态分布N(μ, σ)其中μ, σ2均未知.现测得16只元件的寿命如下: 159 280 101 212 224 379 179 264  ...

  2. 【R语言进行数据挖掘】回归分析

    1.线性回归 线性回归就是使用下面的预测函数预测未来观测量: 其中,x1,x2,...,xk都是预测变量(影响预测的因素),y是需要预测的目标变量(被预测变量). 线性回归模型的数据来源于澳大利亚的C ...

  3. R语言 逐步回归分析

    逐步回归分析是以AIC信息统计量为准则,通过选择最小的AIC信息统计量,来达到删除或增加变量的目的. R语言中用于逐步回归分析的函数 step()    drop1()     add1() #1.载 ...

  4. R 再也不用愁变量太多跑回归太麻烦!R语言循环常用方法总结

    在高维数据分析过程中,为了筛选出与目标结局相关的变量,通常会用到回归分析,但是因为自变量较多,往往要进行多次回归.这就是统计编程语言发挥作用的时候了 有些大神们认为超过3次的复制粘贴就可以考虑使用循环 ...

  5. $用python玩点有趣的数据分析——一元线性回归分析实例

    Refer:http://python.jobbole.com/81215/ 本文参考了博乐在线的这篇文章,在其基础上加了一些自己的理解.其原文是一篇英文的博客,讲的通俗易懂. 本文通过一个简单的例子 ...

  6. 用R语言 做回归分析

    使用R做回归分析整体上是比较常规的一类数据分析内容,下面我们具体的了解用R语言做回归分析的过程. 首先,我们先构造一个分析的数据集 x<-data.frame(y=c(102,115,124,1 ...

  7. R语言︱线性混合模型理论与案例探究(固定效应&随机效应)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 线性混合模型与普通的线性模型不同的地方是除了有 ...

  8. R语言中的线性判别分析_r语言 线性判别分析

    R语言中的线性判别分析_r语言 线性判别分析 在R语言中,线性判别分析(Liner Discriminant Analysis,简称LDA),依靠软件包MASS中有线性判别函数lqa()来实现.该函数 ...

  9. R语言建立回归分析,并利用VIF查看共线性问题的例子

    R语言建立回归分析,并利用VIF查看共线性问题的例子 使用R对内置longley数据集进行回归分析,如果以GNP.deflator作为因变量y,问这个数据集是否存在多重共线性问题?应该选择哪些变量参与 ...

  10. R语言进行机器学习方法及实例(一)

    版权声明:本文为博主原创文章,转载请注明出处   机器学习的研究领域是发明计算机算法,把数据转变为智能行为.机器学习和数据挖掘的区别可能是机器学习侧重于执行一个已知的任务,而数据发掘是在大数据中寻找有 ...

随机推荐

  1. DRF项目之序列化器和视图重写方法的区别

    我们,都知道,DRF框架是一款高度封装的框架. 我们可以通过重写一些方法来实现自定义的功能. 今天,就来说说在视图中重写和序列化器中重写方法的区别. 在视图中重写方法: 接收请求,处理数据(业务逻辑) ...

  2. Codeforces1307C. Cow and Message

    读题,我们知道选1个.选2个的时候是没有冲突的,大于2个的时候就有限制,那么我们观察是否可以把大于2个的情况都转换一下,可以发现,如果有一个串的长度大于2,且出现的次数大于2,那么,组成这个串里必定有 ...

  3. Steam游戏《Zengeon(神明在上)》修改器制作-[先使用CE写,之后有时间的话改用C#](2020年寒假小目标06)

    日期:2020.01.30 博客期:138 星期四 [温馨提示]: 只是想要修改器的网友,可以直接点击此链接下载: 只是想拿CT文件的网友,可以直接点击此链接下载: 没有博客园账号的网友,可以将页面下 ...

  4. 每天一点点之vue框架 watch监听变量(深度监听)

    <div> <p>FullName: {{fullName}}</p> <p>FirstName: <input type="text& ...

  5. JS echarts统计

    柱状图 function drawbarFunc(xs, ys) { //var xs1 = []; //var ys1 = []; require.config({ paths: { echarts ...

  6. COGS 2294. [HZOI 2015] 释迦

    额,其实就是裸的三模数NTT,上一篇已经说过了 哦,还有一个就是对乘起来炸long long的数取模,用long double之类的搞一下就好,精度什么的,,(看出题人心情??) #include&l ...

  7. MySQL部分语法

    MySQL 1.先进入到d盘根目录(自己安装MySQL的盘符) cd d:\2.输入net start mysql3.在d盘的根目录下输入mysql -u root -p就可以进入mysql的命令提示 ...

  8. sklearn学习笔记(1)--make_blobs函数及相应参数简介

    make_blobs方法: sklearn.datasets.make_blobs(n_samples=100,n_features=2,centers=3, cluster_std=1.0,cent ...

  9. Lesson 2 Spare that spider

    How much of each year do spiders killing insects? Why, you may wonder, should spiders be our friends ...

  10. NO28 第四关考试题

    第4章 第4周课前测试考试题 4.1 定时任务规则的含义01 第1题 如果在某用户的crontab文件中有以下记录,该行中的命令多久执行一次(RHCE考试题)?(  ) 30 4 * * 3 mycm ...