200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > R语言 最小二乘法OLS的运用

R语言 最小二乘法OLS的运用

时间:2023-09-26 14:01:09

相关推荐

R语言 最小二乘法OLS的运用

回归有多种形式。下面主要介绍普通最小二乘(OLS)回归法,包括简单线性回归、多项式回归、多元线性回归以及交互性回归。

最小二乘法OLS的主要运算符

条件:减小因变量的真实值与预测值的差值来获取模型参数,即残差平方和最小。

为了能够恰当地解释OLS模型的系数,数据必须满足以下统计假设

(1)正态性。对于固定的自变量值,因变量值成正态分布

(2)独立性。Yi值之间相互独立。

(3)线性。因变量与自变量之间为线性相关。

(4)同方差性。因变量的方差不随自变量的水平不同而变化。

在R中,拟合回归模型最基本的函数是lm(),格式为:

lm(formula, data)

formula中的符号注释:

其他命令如下【对于拟合后的模型(lm函数返回的对象),可以应用下面的函数,得到模型的更多额外的信息】:

1. 简单线性回归

举个栗子:

fit <- lm(weight~height,data=women)summary(fit)

结果分析

残差标准差(Residual standard error):表示模型用身高来预测体重的平均误差

R的平方项(Multiple R-squared):表明模型可以解释体重99.1%的方差,是实际和预测值之间相关系数的平方。

F统计量(F-statistic):检验所有的预测变量预测响应变量是否都在某个概率水平之上

从Coefficients 组中,可以看到 Intercept(截距项)和 自变量(height)的系数,以及截距项和系数的标准差、t值和Pr(>|t|),其中,Pr(>|t|) 表示双边检验的p值

注,p值的表示方法通常有p-value,或Pr,p值是概率,表示某一事件发生的可能性大小。如果P值很小,说明原假设情况的发生的概率很小,而如果出现了,根据小概率原理,我们就有理由拒绝原假设,P值越小,我们拒绝原假设的理由越充分。总之,P值越小,表明结果越显著。

2.多项式回归

使用lm(),在formula参数中使用I()函数来进行多项式拟合

fit2 <- lm(weight~I(height^2),data=women) ##多项式回归仍是线性回归

具体的不介绍

3.多元线性回归

当自变量不止一个时,简单线性回归就变为多元线性回归。

多元回归分析中,第一步最好检查下变量间的相关性cor(),cor.test(),corr.test()

data=data.frame(Y,Z,W)cor(data)

cor(x,use=,method=),use是指定缺失值的处理方式,系统默认是use="everthing"和method=“pearson”。一般也需要计算方差和协差阵,用cov()函数即可cor.test函数只能每次检验一种相关关系。psych包corr.tesr()函数可以做总体(多个特征)的相关检验。corr.test(data,use=“complete”) use取值有两种“pairwise”,"complete"是处理缺失值的,代码如图所示,可以清晰相关系数对应的概率。

一些操作代码:

mydata <- read.csv("intro_auto.csv")# 读入数据,也可以用R中的mtcarsnames(mydata)# 查看数据中的变量名head(mydata)# 查看数据中的前几条记录attach(mydata)# 直接调用变量,不用mydata$mpgsummary(mpg)# 变量mpg的描述性统计分析,最小值、最大值、中位数、平均数、四分位数等sort(make)# 字符型变量按照abc排序,如果是数值型,从大到小排序table(make)# 出现频率统计table(make,foreign)# 二维的频率统计cor(price,mpg)# 相关性t.test(mpg,mu = 20)# t检验,mu的均值是否异于20anova(lm(mpg~factor(foreign)))# 方差分析olsreg <- lm(mpg~weight+length+foreign)# 多元线性回归summary(olsreg)# 回归结果的描述Y <- cbind(mpg)X <- cbind(weight,length,foreign)# 把被解释变量存成Y,解释变量存成X,后面回归的时候方便很多olsreg <- lm(Y ~ X)# 回归summary(olsreg)# 回归结果的描述plot(olsreg)# 会生成四张图,反映回归的好坏##Q-Q图对应正态性检验##Residuals vs Fitted(残差图与拟合图)对应线性假设,##若图中有曲线关系,则可能需要对回归模型加二次项。##Scale-Location Graph(位置尺度图)对应同方差性。##若水平线周围的点随机分布,则满足假设。##Residual vs Leverage(残差与杠杆图)提供可能关注的单个观测点。##从图上可以鉴别出离群点、高杠杆点和强影响点。

4.有交互项的多元线性回归

此时代码例子为:

fit <- lm(mpg ~ hp + wt + hp:wt, data = mtcars)

若两个自变量的交互项显著,则说明因变量与其中一个自变量的关系依赖于另一个自变量。

用effects包中的effect()函数,可以用图形展示交互项结果(即当一个变量取某个固定的值时,另一个自变量变化时因变量的变化),格式为:

plot(effect(term, mod, xlevels), multiline =TRUE)

term即模型要画的项,mod为通过lm()拟合的模型,xlevels是一个列表,指定变量要设定的常量值,multiline = TRUE选项表示添加相应直线。

例:

plot(effect("hp:wt", fit, list(wt = c(2.2, 3.2, 4.2))), multiline = TRUE)

5.回归诊断

summary()函数对模型有了整体的描述,但是没有提供关于模型在多大程度上满足统计假设的任何信息,即没有任何输出告诉你模型是否合适。回归诊断技术提供了评价回归模型适用性的必要工具,帮助发现并纠正问题。

car包提供了大量的函数,大大增强了拟合和评价回归模型的能力

5.1 正态性

qqplot函数,提供了精确的正态假设检验方法

> library(carData)> library(car)> par(mfrow=c(1,2))> fit <- lm(weight~height,data=women)> qqPlot(fit,labels=row.names(women),id.method='identity',simulate=TRUE,main='qq-fit')[1] 1 15> fit2 <- lm(weight~height+I(height^2),data=women)> qqPlot(fit2,labels=row.names(women),id.method='identity',simulate=TRUE,main='qq-fit2')[1] 13 15

置信区间通过虚线划定,当绝大多数点都落在置信区间时,说明正态性假设符合的很好

5.2 误差的独立性

car包提供了一个可做Durbin-Watson检验的函数,能够检测误差的序列相关性。对应函数为durbinwatsonTest()

durbinWatsonTest(fit)lag Autocorrelation D-W Statistic p-value1 0.5850790.3153804 0Alternative hypothesis: rho != 0

p值 (p=0)不显著,误差项之间独立

5.3 线性

通过成分残差图(component + residual plots)检查因变量和自变量之间是否呈线性关系。

对应car包中crPlot函数绘制。

crPlots(fit)

若图形存在非线性,则说明可能对预测变量的函数形式建模不够充分,那么需要添加一些曲线成分,比如多项式,对一个或多个变量进行变换(log(x)代替x),或用其他回归变体形式而不是线性回归。

5.4 同方差性

ncvTest()函数生成一个计分检验,零假设为误差方差不变,备择假设为误差方差随着拟合值水平的变化而变化。若检验显著,则说明存在异方差性(误差方差不恒定)。

spreadLevelPlot()函数创建一个添加了最佳拟合曲线的散点图,展示标准化残差绝对值与拟合值的关系。

> ncvTest(fit)Non-constant Variance Score Test Variance formula: ~ fitted.values Chisquare = 0.8052115, Df = 1, p = 0.36954> spreadLevelPlot(fit)Suggested power transformation: -0.8985826

记分检验不显著:p=0.36954,说明满足方差不变假设,也可以通过分布水平看到这一点,点在水平的最佳拟合曲线周围呈随机分布。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。