Transcript R语言课件
R语言与回归分析
R简介
R语言分析一个简单的线性模型
总结与展望
作业
R简介
1.S语言与R
2.R的安装与运行
3. R程序包的安装及使用
4. R语言中的几点注意事项
S语言与R
R是一个有着强大统计分析及作图功能的软
件系统
R语言可以看作是贝尔实验室开发的S语言
的一种实现或形式
S语言主要内含在S-PLUS软件中,可将R
和S-PLUS视为S语言的两种形式
S/S-PLUS方面的文档都可以直接用于R
R的安装与运行
R的安装:从网址http://www.r-project.org/
下载R的安装程序和R程序包
(R下载地址:http://cran.rproject.org/bin/windows/base/)
http://www.r-project.org/,单击download R
单击Windows ,在单击base 单击
Download R 2.11.1 for Windows
R程序包的安装
(1)菜单方式:联网条件下,按程序包 安装
程序包
选择CRAN镜像服务器
选择程序包
(2)命令方式:install.packages(“PKname”)
(3)本地安装:下载需要的程序包及与之关联
的程序包,再用“程序包”菜单中的“用
本机的zip文件安装程序包”
R程序包的使用
除R的标准程序包外,新安装的程序包使用前必须载
入,两种载入方式:
(1)菜单方式:
通过“程序包”菜单中的“载入程序包”,再从已
有程序包中选定需要的一个加载;
(2) 命令方式:
在命令提示符后键入
>libiary(“PKname”) # 或 libiary(‘PK name’) ,
libiary(PKname)
R语言中的几点注意事项
R语言区分大小写,即A与a不同;正
常情况下所有字母和数字都是可用的。
命令由(;)分隔,或另起新行。
基本命令由({和})合并成复合表达式
注释以(#)开始,到行末结束。
命令未结束,R给出提示符(+)。
R语言与线性回归
线性回归模型的简单回顾
如何应用R语言进行回归分析
线性回归模型的简单回顾
Y通常称为因变量或响应变量,X称为自变
量或预报变量。Y值由两部分组成,一部分
由X决定是X的函数,记为f(X);另一部分由
其他为考虑因素所产生的影响被称为随机
误差,记为e。模型记为:
Y=f(X)+e
要求 E(e)=0,特别的f(X)取为线性函数。
线性回归模型的简单回顾
回归分析的主要目的是探寻因变量与自变
量之间的关系。
最常用的函数形式是线性函数,含有p个自
变量的一般线性模型:
yi 0 1xi1 2 xi 2
p xip i
其中 0 为常数项, j ( j 1, 2, , p) 为第j个解
释型变量 xij 的回归系数,它意味着,若 xij
变化一个单位,可以预期 yi 变化多少单位。
线性回归模型的简单回顾
对此普通线性模型做如下假定:
(1)独立性:不同观测值之间相互独立的;残
差项同解释性变量之间是独立的。
(2)常方差:即残差 i 的方差不依赖于自变量
的取值,为一个常数。
(3)正态性:即残差项 i 是服从正态分布的。
案例介绍
背景、目标、变量和分析
案例背景
目前中国的资本市场逐渐成熟,投资于股市成
为众多企业乃至个人的重要理财方式。因此利
用上市公司当年的公开的财务指标对其来年盈
利状况予以预测就成为投资人最重要的决策依
据。
本案例随机抽取深市和沪市2002年和2003年
各500个样本,对上市公司的净资产收益率
(return on equity, ROE)进行预测。
案例目标与变量
目标:盈利预测
因变量:下一年的净资产收益率(ROE)
自变量:当年的财务信息
样本容量:2002年500;2003年500
自变量
ROEt: 当年净资产收益率
ATO: 资产周转率(asset turnover ratio)
LEV: 债务资本比率(debt to asset ratio)
反映公司基本债务状况
PB: 市倍率(price to book ratio)
反映公司预期未来成长率
ARR: 应收账款/主营业务收入(account
receivable over total income)
反映公司的收入质量
对模型的进一步分析
哪个自变量在预测方面最有用?
哪个自变量是最重要的?
如何使用模型进行预测?
描述分析
获得对数据的整体性认识
数据读取
(1)使用函数read.table()创建数据框
>rm(list=ls()) #清理当前工作空间
a<-read.table("D:\\暑期建模
\\CH1\\roe.txt",header=T)
(2)使用函数scan()比read.table()更灵活,
并且可以指定变量的类型
Excel数据读取
(1)利用剪切板:打开Excel电子表格,选中
需要数据,复制到剪切板。然后键入命令
>a<-read.delim("clipboard")
(2)使用程序包RODBC
>library(RODBC)
b<-odbcConnectExcel("d:/暑期建模
/CH1/roe.xls")
a<-sqlFetch(b,"roe")
数据保存
> save(a,file="a.RData")
load("d:\\我的文档\\a.RData")#调用以保存
数据
write.table(a, "a.txt")#保存为文本文档
write.csv(a, "a.csv")
a1=a[a$year==2002,-1]
save(a1,file="a1.RData")
显示数据
变量的概括性度量
a1=a[a$year==2002,-1] #从a中选出year为2002
的数据,并删除第1列,然后赋值给a1
Mean=sapply(a1,mean) #计算a1中各列的均值
Min=sapply(a1,min)#计算a1中各列的最小值
Median=sapply(a1,median) #计算a1中各列的中
位数
Max=sapply(a1,max) #计算a1中各列的最大值
SD=sapply(a1,sd) #计算a1中各列的标准差
cbind(Mean,Min,Median,Max,SD) #将均值、最
小值、中位数、最大值、标准差集中在一起展示
试验结果
变量间的相关性
散点图是一种最简单的相关分析工具
通过函数 pairs()观察各个变量间的相关性
命令:> pairs(a,panel=panel.smooth)
随机变量样本的相关系数
>round(cor(a),3)
相关性检验 ,使用函数cor.test()
应用R语言命令:plot(a1$ROEt,a1$ROE)
绘制散点图,可以看出ROEt与ROE的相关性
模型的建立
模型、假设和参数估计
模型形式及假设
线性回归模型
yi 0 1xi1 2 xi 2 p xip i
模型假设
(1)独立性假设
(2)同方差假设
(3)正态性假设
参数估计
模型:
yi 0 1xi1 2 xi 2 p xip i
最小二乘估计量:
RSS yi ˆ0 ˆ1 xi1 ˆ2 xi 2 ˆ p xip
RSS
2
方差估计量:ˆ
n p 1
2
参数估计
用矩阵形式表示线性模型记为
Y X e
其中 (0 , 1, p )' 是回归系数变量,
Y ( y1 , , yn )' 是因变量向量,e (1 , , n )'
是随机扰动向量,而X为设计矩阵。
当( X ' X )1 存在时,回归参数 的最小二乘
1
估计为 ( X ' X ) X 'Y 。
参数估计的R软件实现
R语句:使用函数lm()
>lm1=lm(ROE~ROEt+ATO+PM+LE
V+GROWTH+PB+ARR+INV+ASS
ET,data=a1)
summary(lm1)
注:我们采用2002年数据拟合模型
拟合优度
总平方和
残差平方和
SST yi y
2
SSE yi yˆi
2
计算残差函数residuals()
R-Square
SSE
R 1
SST
2
显著性检验
F检验、T检验
F检验
假设
H0 : i 0 i vs
H1 : i 0i
检验统计量
SST SSE / p
F
~ Fp,n p 1
SSE / n p 1
拒绝域
F Fp,n p1,1
T检验
假设
H 0 : i 0
检验统计量
拒绝域
vs
T
ˆi
H1 : i 0
v x ˆ
~ tn p 1
T tn p1,1 / 2
各个结果的含义
第一列:参数的估计值
第二列:各个参数估计的标准差
第三列:通过样本计算得T检验统计量的值
第四列:通过T检验计算的p值
Residual standard error(残差标准误)
SSE / n p 1
R-squared(判别系数)
显著性检验的结论
从F检验的结果看,模型的线性关系是显著的。
从T检验的结果看,ROEt和LEV两个变量通过
了检验,GROWTH变量在显著性水平降至0.1
时也可以通过检验,因此这三个变量与因变量
的线性关系较为显著。
注意,这不说明应该删除其它变量!
模型的诊断
异方差性、非正态性、异常值
同方差性检验
正
常
的
残
差
图
同方差性检验
观
测
值
不
独
立
同方差性检验
差方
相差
等齐
假性
设不
不成
成立
立(
)即
方
同方差性检验
应
改
为
曲
线
正态性检验
若
t ~ N (, 2 )
, 并且
P t q
则有
t q
P
正态性检验
进一步,可得到
q
z
以及 q z
所以在正态性假设下,残差 t 与 z 应该
成线性关系。
正态性检验
Q-Q 图
残差: 1 , 2 ,, n
将残差排序: 1 2 n
Y: 1 , 2 ,, n
X: z1/ n , z2 / n ,, zn / n
将上面的方法应用于本案例
目标1:检验模型是否符合三个假设
目标2:找出异常值
R语句:
par(mfrow=c(2,2)) #设置画图为2x2的格式
plot(lm1,which=c(1:4)) #画出lm1中对应于
模型检验的4张图,包括残差图、QQ图和
Cook距离图
检验发现47号数据为异常值,需要将其消除
语句:a1=a1(-47)
应用上述方法,绘制拟合模型的诊断图
异常点的识别
一般把标准化残差的绝对值大于等于2的观
测点认为是可疑点;而标准化残差的绝对
值大于等于3的观测点认为是异常点。
剔除异常点
a1=a1[-47,] #删除a1中第47行的观测
lm2=lm(ROE~ROEt+ATO+PM+LEV+GRO
WTH+PB+ARR+INV+ASSET,data=a1) #
用上一行命令得到的新数据a1再次拟合线
型回归模型,结果赋值给lm2
plot(lm2,which=c(1:4)) #画出lm2中对应于
模型检验的4张图,包括残差图、QQ图和
Cook距离图
拟合结果
47为异常点去掉之后,拟合模型诊断图如下
多重共线性
含义及检验
共线性含义
共线性问题是指拟合多元线性回归时,
自变量之间存在线性关系或近似线性关
系。
自变量间的线性关系将隐蔽变量的显著
性,增加参数估计的误差,会产生不稳
定的模型
一个例子
假如有两个变量x1和x2,用最小二乘法得到如
下参数估计量。
方差膨胀因子
定义下面的回归形式为辅助回归
xi a b j x j e
j i
2
R
令 i 为辅助回归的判定系数
则方差膨胀因子为: VIFi
1
2
1 Ri
它反映了在多大程度上第i个自变量所包含的
信息被其他自变量覆盖
方差膨胀因子
R语句:函数vif()
所有的VIF值都小于10且接近1,所以没有多
重共线性问题。
注:VIF>10,表明模型中有很强的共线性问题
变量选择
AIC准则、BIC准则
AIC 和 BIC
AIC方法比较保守,其中p为自变量个数,与
RSS成反比。
RSS
AIC n log
1 log 2 2 p
n
使AIC达到最小的模型是最优的
BIC相对不那么保守,因此保留的变量可能会
比较少。
RSS
BIC n log
1 log 2 log n p
n
预测
预测值与置信区间
yˆ 0 ˆ0 ˆ1 x01 ˆ 2 x02 ˆ p x0 p
1
ˆ
P.I.: x0 tn p1ˆ 1 x0 ( X X ) x0
1
ˆ
C.I.: x0 tn p 1ˆ x0 ( X X ) x0
数据准备
以2003年数据为检验数据,可以用如下方法
对数据进行准备
预测
R语言的特点
免费
浮点运算功能强大
不依赖于操作系统
帮助功能完善
作图功能强大
R的特点
统计分析能力尤为突出
可移植性强
强大的拓展与开发能力
灵活而不死板