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程序包 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的标准程序包外,新安装的程序包使用前必须载入,两种载入方式: 菜单方式: 通过“程序包”菜单中的“载入程序包”,再从已有程序包中选定需要的一个加载; (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个自变量的一般线性模型: 其中 为常数项, 为第j个解释型变量 的回归系数,它意味着,若 变化一个单位,可以预期 变化多少单位。
线性回归模型的简单回顾 对此普通线性模型做如下假定: (1)独立性:不同观测值之间相互独立的;残差项同解释性变量之间是独立的。 (2)常方差:即残差 的方差不依赖于自变量的取值,为一个常数。 (3)正态性:即残差项 是服从正态分布的。
案例介绍 背景、目标、变量和分析
案例背景 目前中国的资本市场逐渐成熟,投资于股市成为众多企业乃至个人的重要理财方式。因此利用上市公司当年的公开的财务指标对其来年盈利状况予以预测就成为投资人最重要的决策依据。 本案例随机抽取深市和沪市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的相关性
模型的建立 模型、假设和参数估计
模型形式及假设 线性回归模型 模型假设 (1)独立性假设 (2)同方差假设 (3)正态性假设
参数估计 模型: 最小二乘估计量: 方差估计量: 29
参数估计 用矩阵形式表示线性模型记为 其中 是回归系数变量, 是因变量向量, 是随机扰动向量,而X为设计矩阵。 其中 是回归系数变量, 是因变量向量, 是随机扰动向量,而X为设计矩阵。 当 存在时,回归参数 的最小二乘估计为 。
参数估计的R软件实现 R语句:使用函数lm() >lm1=lm(ROE~ROEt+ATO+PM+LEV+GROWTH+PB+ARR+INV+ASSET,data=a1) summary(lm1) 注:我们采用2002年数据拟合模型
拟合优度 总平方和 残差平方和 计算残差函数residuals() R-Square
显著性检验 F检验、T检验
F检验 假设 检验统计量 拒绝域
T检验 假设 检验统计量 拒绝域
各个结果的含义 第一列:参数的估计值 第二列:各个参数估计的标准差 第三列:通过样本计算得T检验统计量的值 第四列:通过T检验计算的p值 Residual standard error(残差标准误) R-squared(判别系数)
显著性检验的结论 注意,这不说明应该删除其它变量! 从F检验的结果看,模型的线性关系是显著的。 从T检验的结果看,ROEt和LEV两个变量通过了检验,GROWTH变量在显著性水平降至0.1时也可以通过检验,因此这三个变量与因变量的线性关系较为显著。 注意,这不说明应该删除其它变量!
模型的诊断 异方差性、非正态性、异常值
同方差性检验 正常的残差图 将残差和自变量作散点图,观察图形的形状 41
同方差性检验 观测值不独立
同方差性检验 方差齐性不成立(即方差相等假设不成立)
同方差性检验 应改为曲线
正态性检验 若 , 并且 则有 45
正态性检验 进一步,可得到 以及 所以在正态性假设下,残差 与 应该成线性关系。
正态性检验 Q-Q 图 残差: 将残差排序: Y: X:
将上面的方法应用于本案例 目标1:检验模型是否符合三个假设 目标2:找出异常值 R语句: par(mfrow=c(2,2)) #设置画图为2x2的格式 plot(lm1,which=c(1:4)) #画出lm1中对应于模型检验的4张图,包括残差图、QQ图和Cook距离图 检验发现47号数据为异常值,需要将其消除 语句:a1=a1(-47) c(2,2):建立一个向量2,2 par设置图形格式 50
应用上述方法,绘制拟合模型的诊断图
异常点的识别 一般把标准化残差的绝对值大于等于2的观测点认为是可疑点;而标准化残差的绝对值大于等于3的观测点认为是异常点。
剔除异常点 a1=a1[-47,] #删除a1中第47行的观测 lm2=lm(ROE~ROEt+ATO+PM+LEV+GROWTH+PB+ARR+INV+ASSET,data=a1) #用上一行命令得到的新数据a1再次拟合线型回归模型,结果赋值给lm2 plot(lm2,which=c(1:4)) #画出lm2中对应于模型检验的4张图,包括残差图、QQ图和Cook距离图
拟合结果
47为异常点去掉之后,拟合模型诊断图如下
多重共线性 含义及检验
共线性含义 共线性问题是指拟合多元线性回归时,自变量之间存在线性关系或近似线性关系。 自变量间的线性关系将隐蔽变量的显著性,增加参数估计的误差,会产生不稳定的模型
一个例子 假如有两个变量x1和x2,用最小二乘法得到如下参数估计量。
方差膨胀因子 定义下面的回归形式为辅助回归 令 为辅助回归的判定系数 则方差膨胀因子为: 令 为辅助回归的判定系数 则方差膨胀因子为: 它反映了在多大程度上第i个自变量所包含的信息被其他自变量覆盖
方差膨胀因子 R语句:函数vif() 所有的VIF值都小于10且接近1,所以没有多重共线性问题。
变量选择 AIC准则、BIC准则
AIC 和 BIC AIC方法比较保守,其中p为自变量个数,与RSS成反比。 使AIC达到最小的模型是最优的
预测
预测值与置信区间
数据准备 以2003年数据为检验数据,可以用如下方法对数据进行准备 y$a # y中名为a的变量 68
预测
R语言的特点 免费 浮点运算功能强大 不依赖于操作系统 帮助功能完善 作图功能强大
R的特点 统计分析能力尤为突出 可移植性强 强大的拓展与开发能力 灵活而不死板