R语言:多元线性回归和模型检验

利用swiss数据集进行多元线性回归研究

# 先查看各变量间的散点图  

pairs(swiss, panel = panel.smooth, main = "swiss data",

col = 3 + (swiss$Catholic > 50))

# 利用全部变量建立多元线性回归

a=lm(Fertility ~ . , data = swiss)

summary(a)

##

## Call:

## lm(formula = Fertility ~ ., data = swiss)

##

## Residuals:

##     Min      1Q  Median      3Q     Max

## -15.274  -5.262   0.503   4.120  15.321

##

## Coefficients:

##                  Estimate Std. Error t value Pr(>|t|)

## (Intercept)       66.9152    10.7060    6.25  1.9e-07 ***

## Agriculture       -0.1721     0.0703   -2.45   0.0187 *

## Examination       -0.2580     0.2539   -1.02   0.3155

## Education         -0.8709     0.1830   -4.76  2.4e-05 ***

## Catholic           0.1041     0.0353    2.95   0.0052 **

## Infant.Mortality   1.0770     0.3817    2.82   0.0073 **

## ---

## Signif. codes:  0 ‘***‘ 0.001 ‘**‘ 0.01 ‘*‘ 0.05 ‘.‘ 0.1 ‘ ‘ 1

##

## Residual standard error: 7.17 on 41 degrees of freedom

## Multiple R-squared:  0.707,  Adjusted R-squared:  0.671

## F-statistic: 19.8 on 5 and 41 DF,  p-value: 5.59e-10

# 从结果看,Education变量的p值一颗星就都没有,说明对模型极不显著。

# R中提供了add1 drop1函数来针对线性模型进行变量的增减处理

drop1(a)

## Single term deletions

##

## Model:

## Fertility ~ Agriculture + Examination + Education + Catholic +

##     Infant.Mortality

##                  Df Sum of Sq  RSS AIC

## <none>                        2105 191

## Agriculture       1       308 2413 195

## Examination       1        53 2158 190

## Education         1      1163 3268 209

## Catholic          1       448 2553 198

## Infant.Mortality  1       409 2514 197

# 从结果看,去掉Education这个变量后,AIC最小,所以下一步可以剔除该变量进行建模。

b=update(a,.~.-Education)

summary(b)

##

## Call:

## lm(formula = Fertility ~ Agriculture + Examination + Catholic +

##     Infant.Mortality, data = swiss)

##

## Residuals:

##     Min      1Q  Median      3Q     Max

## -23.919  -3.553  -0.649   6.596  14.177

##

## Coefficients:

##                  Estimate Std. Error t value Pr(>|t|)

## (Intercept)       59.6027    13.0425    4.57  4.2e-05 ***

## Agriculture       -0.0476     0.0803   -0.59  0.55669

## Examination       -0.9680     0.2528   -3.83  0.00042 ***

## Catholic           0.0261     0.0384    0.68  0.50055

## Infant.Mortality   1.3960     0.4626    3.02  0.00431 **

## ---

## Signif. codes:  0 ‘***‘ 0.001 ‘**‘ 0.01 ‘*‘ 0.05 ‘.‘ 0.1 ‘ ‘ 1

##

## Residual standard error: 8.82 on 42 degrees of freedom

## Multiple R-squared:  0.545,  Adjusted R-squared:  0.501

## F-statistic: 12.6 on 4 and 42 DF,  p-value: 8.27e-07

#从接下来的结果看,有两个变量不显著,R平方也仅有0.53,模型效果极不理想。需要进一步进行研究。

# 幸好R有step函数,可以对模型进行变量自动筛选,根据AIC最小原则进行

b=step(a,direction="backward")

## Start:  AIC=190.7

## Fertility ~ Agriculture + Examination + Education + Catholic +

##     Infant.Mortality

##

##                    Df Sum of Sq  RSS AIC

## - Examination       1        53 2158 190

## <none>                          2105 191

## - Agriculture       1       308 2413 195

## - Infant.Mortality  1       409 2514 197

## - Catholic          1       448 2553 198

## - Education         1      1163 3268 209

##

## Step:  AIC=189.9

## Fertility ~ Agriculture + Education + Catholic + Infant.Mortality

##

##                    Df Sum of Sq  RSS AIC

## <none>                          2158 190

## - Agriculture       1       264 2422 193

## - Infant.Mortality  1       410 2568 196

## - Catholic          1       957 3115 205

## - Education         1      2250 4408 221

summary(b)

##

## Call:

## lm(formula = Fertility ~ Agriculture + Education + Catholic +

##     Infant.Mortality, data = swiss)

##

## Residuals:

##     Min      1Q  Median      3Q     Max

## -14.676  -6.052   0.751   3.166  16.142

##

## Coefficients:

##                  Estimate Std. Error t value Pr(>|t|)

## (Intercept)       62.1013     9.6049    6.47  8.5e-08 ***

## Agriculture       -0.1546     0.0682   -2.27   0.0286 *

## Education         -0.9803     0.1481   -6.62  5.1e-08 ***

## Catholic           0.1247     0.0289    4.31  9.5e-05 ***

## Infant.Mortality   1.0784     0.3819    2.82   0.0072 **

## ---

## Signif. codes:  0 ‘***‘ 0.001 ‘**‘ 0.01 ‘*‘ 0.05 ‘.‘ 0.1 ‘ ‘ 1

##

## Residual standard error: 7.17 on 42 degrees of freedom

## Multiple R-squared:  0.699,  Adjusted R-squared:  0.671

## F-statistic: 24.4 on 4 and 42 DF,  p-value: 1.72e-10

接下来,对建模的变量和模型进行回归诊断的研究

首先,对自变量进行正态性检验

shapiro.test(swiss$Agriculture)

##

##  Shapiro-Wilk normality test

##

## data:  swiss$Agriculture

## W = 0.9664, p-value = 0.193

shapiro.test(swiss$Examination)

##

##  Shapiro-Wilk normality test

##

## data:  swiss$Examination

## W = 0.9696, p-value = 0.2563

shapiro.test(swiss$Education)

##

##  Shapiro-Wilk normality test

##

## data:  swiss$Education

## W = 0.7482, p-value = 1.312e-07

shapiro.test(swiss$Catholic)

##

##  Shapiro-Wilk normality test

##

## data:  swiss$Catholic

## W = 0.7463, p-value = 1.205e-07

shapiro.test(swiss$Infant.Mortality)

##

##  Shapiro-Wilk normality test

##

## data:  swiss$Infant.Mortality

## W = 0.9776, p-value = 0.4978

对各变量的正态性检验结果来看,变量Education和Catholic的p值小于0.05,故这两个变量数据不符合正态性分布。

现在,对模型的残差也进行正态性检验(回归模型的残差也要符合正态分布)

b.res<-residuals(b)

shapiro.test(b.res)

##

##  Shapiro-Wilk normality test

##

## data:  b.res

## W = 0.9766, p-value = 0.459

从结果来看,p值是0.459,模型残差符合正态分布

接下来,画出回归值与残差的残差图(应该符合均匀分布,即残差不管回归值如何,都具有相同分布)

par(mfrow=c(1,2))

# 画出残差图

plot(b.res~predict(b))

# 画出标准残差图

plot(rstandard(b)~predict(b))

par(mfrow=c(1,1))

从残差图来看,效果不太明显.

其实,可以直接画出残差图

par(mfrow=c(2,2))

plot(b)

par(mfrow=c(1,1))

时间: 2024-10-20 15:39:35

R语言:多元线性回归和模型检验的相关文章

R语言 多元线性回归分析

#线性模型中有关函数#基本函数 a<-lm(模型公式,数据源) #anova(a)计算方差分析表#coef(a)提取模型系数#devinace(a)计算残差平方和#formula(a)提取模型公式#plot(a)绘制模型诊断图#predict(a)用作预测#print(a)显示#residuals()计算残差#setp()逐步回归分析#summary()提取模型资料 #多元线性回归分析 #回归系数的估计 #显著性检验: 1回归系数的显著性检验 t检验 就是检验某个变量系数是否为0 2回归方程的显

【R】多元线性回归

R中的线性回归函数比较简单,就是lm(),比较复杂的是对线性模型的诊断和调整.这里结合Statistical Learning和杜克大学的Data Analysis and Statistical Inference的章节以及<R语言实战>的OLS(Ordinary Least Square)回归模型章节来总结一下,诊断多元线性回归模型的操作分析步骤. 1.选择预测变量 因变量比较容易确定,多元回归模型中难在自变量的选择.自变量选择主要可分为向前选择(逐次加使RSS最小的自变量),向后选择(逐

R语言——一元线性回归

1 一元线性回归 高尔顿被誉为现代回归的创始人,"回归效应"的发现源于高尔顿的豌豆遗传试验.在这个试验中,高尔顿发现,并非尺寸大的豌豆,其后代尺寸也大,尺寸小的豌豆,其后代尺寸也小.而是具有一种不同的趋势,即尺寸大的豌豆趋向于得到尺寸更小的子代,而尺寸小的豌豆趋向于得到尺寸更大的后代.高尔顿把这一现象称为"返祖",后来又称为"向平均值回归"."回归效应"的应用非常广泛,生活中随处可见这样的例子. 1.1 变量之间的关系的度量

R语言多元统计分析初探

# 读取多元统计分析数据到R wine<-read.table("http://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data", sep=",") # 绘制多元统计数据 # 矩阵散点图 # 一种常见的方法是使用散点图画出多元统计数据,展现出所有变量两两之间的散点图. # 我们可以使用R中的"car"包里的"scatterplotMatrix()&q

从一个R语言案例学线性回归

线性回归简介 如下图所示,如果把自变量(也叫independent variable)和因变量(也叫dependent variable)画在二维坐标上,则每条记录对应一个点.线性回规最常见的应用场景则是用一条直线去拟和已知的点,并对给定的x值预测其y值.而我们要做的就是找出一条合适的曲线,也就是找出合适的斜率及纵截矩. SSE & RMSE 上图中的SSE指sum of squared error,也即预测值与实际值之差的平方和,可由此判断该模型的误差.但使用SSE表征模型的误差有些弊端,比如

R语言 一元线性回归

#一元线性回归的基本步骤#1.载入数据 给出散点图 x<-c(0.10,0.11,0.12,0.13,0.14,0.15,0.16,0.17,0.18,0.20,0.21,0.23) y<-c(42.0,43.5,45.0,45.5,45.0,47.5,49.0,53.0,50.0,55.0,55.0,60.0) plot(x,y) #2.线性回归 得到回归方程  并查看回归结果 CG<-lm(y~x) CG summary(CG) #所得回归方程为y=130.83x+28.49#3.线

R语言解读多元线性回归模型

转载:http://blog.fens.me/r-multi-linear-regression/ 前言 本文接上一篇R语言解读一元线性回归模型.在许多生活和工作的实际问题中,影响因变量的因素可能不止一个,比如对于知识水平越高的人,收入水平也越高,这样的一个结论.这其中可能包括了因为更好的家庭条件,所以有了更好的教育:因为在一线城市发展,所以有了更好的工作机会:所处的行业赶上了大的经济上行周期等.要想解读这些规律,是复杂的.多维度的,多元回归分析方法更适合解读生活的规律. 由于本文为非统计的专业

基于R语言的数据分析和挖掘方法总结——均值检验

2.1 单组样本均值t检验(One-sample t-test) 2.1.1 方法简介 t检验,又称学生t(student t)检验,是由英国统计学家戈斯特(William Sealy Gosset, 1876-1937)所提出,student则是他的笔名.t检验是一种检验总体均值的统计方法,当数据中仅含单组样本且样本数较大时(通常样本个数≧30的样本可视为样本数较大),可用这种方法来检验总体均值是否大于.小于或等于某一特定数值.当数据中仅含单组样本但样本数较小时(通常样本个数<30的样本可视为

R语言数据分析系列之七

R语言数据分析系列之七 -- by comaple.zhang 回归分析建模是数据分析里面很重要的一个应用之一,即通过使用已有的自变量的值建立某种关系,来预测未知变量(因变量)的值.如果因变量是连续的那就是回归分析,如果因变量为离散的,可以理解为是分类.在机器学习算法中,不管是连续变量预测还是离散的变量预测,我们都称之为有监督学习. 回归分析可以用来做广告点击率预测也可以用来做销量预测,app各种指标预测,或者库存量,分仓铺货预测等.既然如此神奇,那么我们就来看一下回归是如何做到的. 数据集 我