R语言学习DAY04:回归分析

Python012

R语言学习DAY04:回归分析,第1张

R本身是一门统计语言,主要用于统计分析,前面的语法部分算是基础,接下来开始进入统计模型应用。首先从最常用的回归分析说起。

有关线性回归分析模型的基本假定需要注意:1)关于随机干扰项的高斯-马尔科夫定理;2)关于自变量的:不存在共线性;3)关于模型的:模型设定正确。

用 glm 函数建立广义线性模型,用参数 family 指定分布类型,logistic模型指定为binomial

用 predict 函数进行预测, predict(model, data, type = 'response'

此外,还可以用 mlogit 包中的 mlogit 函数做多分类变量logistic回归, rms 包中的 lrm 函数做顺序变量logistic回归, glmnet 包中的 glmnet 函数做基于正则化的logistic回归

#b站视频——R语言入门与数据分析

#内置数据集

#固定格式的数据(矩阵、数据框或一个时间序列等)

#统计建模、回归分析等试验需要找合适的数据集

#R内置数据集,存储在,通过

help(package="datasets")

#通过data函数访问这些数据集

data()

#得到新窗口  前面:数据集名字  后面:内容

#包含R所有用到的数据类型,包括:向量、矩阵、列表、因子、数据框以及时间序列等

#直接输入数据集的名字就可以直接使用这些数据集

#输出一个向量

rivers

#是北美141条河流长度

#这些数据集的名字都是内置的,一般我们在给变量命名时最好不要重复

#否则数据集在当前对话中会被置换掉

#例如

rivers<-c(1,2,3)

rivers

#不过影响不大

#再使用data函数重新加载这个数据集就可以了

data("rivers")

rivers

#一些常用内置数据集

#默认介绍页面只有名字和介绍,并没有给出数据分类

#哪些是向量、矩阵、数据框等?

#查看数据集除了直接敲数据集名字显示数据之外

#还可以使用help函数查看每个数据集具体的内容

help("mtcars")

euro

#欧元汇率,长度为11,每个元素都有命名

#输出向量的属性信息

names(euro)

#将5个数据构成一个数据框

向量

state.abb #美国50个州的双字母缩写

state.area #美国50个州的面积

state.name #美国50个州的全称

因子

state.division #美国50个州的分类,9个类别

state.region #美国50个州的地理分类

#

state<-data.frame(state.name,state.abb,state.area,state.division,state.region)

state

state.x77 #美国50个州的八个指标

state.x77

VADeaths #1940年弗吉尼亚州死亡率(每千人)

volcano #某火山区的地理信息(10米×10米的网格)

WorldPhones #8个区域在7个年份的电话总数

iris3 #3种鸢尾花形态数据

#以上矩阵→适合画热图

heatmap(volcano)

#这里只是作为一个演示,还需要对这个图进行一些调整

#更复杂的数据结构

Titanic #泰坦尼克乘员统计,是一个数组

UCBAdmissions #伯克利分校1973年院系、录取和性别的频数

crimtab #3000个男性罪犯左手中指长度和身高关系

HairEyeColor #592人头发颜色、眼睛颜色和性别的频数

occupationalStatus #英国男性父子职业联系

#类矩阵

eurodist #欧洲12个城市的距离矩阵,只有下三角部分

Harman23.cor #305个女孩八个形态指标的相关系数矩阵

Harman74.cor #145个儿童24个心理指标的相关系数矩阵

#R中内置最多的数据集——数据框

cars #1920年代汽车速度对刹车距离的影响

iris #3种鸢尾花形态数据

mtcars #32辆汽车在11个指标上的数据

rock #48块石头的形态数据

sleep #两药物的催眠效果

swiss #瑞士生育率和社会经济指标

trees #树木形态指标

USArrests #美国50个州的四个犯罪率指标

women #15名女性的身高和体重

#列表

state.center #美国50个州中心的经度和纬度

#类数据框

Orange #桔子树生长数据

#时间序列数据,和数据框类似,不同的是具有时间序列的顺序,是数据分析中非常常见的格式

#能反映出变化情况以及变化的趋势等

#因此有很多专门的方法用于时间序列的数据分析

co2 #1959-1997年每月大气co2浓度(ppm)

presidents #1945-1974年每季度美国总统支持率

uspop #1790–1970美国每十年一次的人口总数(百万为单位)

#除了内置数据集之外,许多R扩展包中也内置了很多数据集

#这些数据集作为扩展包的函数使用的案例

#加载R包之后这些数据集也同样被加载进来

#例如MASS包中的Cars93数据

#包含了27个变量,是1993年93辆汽车的型号指标

install.packages("MASS")

library("MASS")

help("Cars93")

#使用data函数在参数package中等于对应R包的名字,即可列出每个R包中包含的数据集

#ex

data(package="MASS")

#显示R中所有可用的数据集

data(package=.packages(all.available = TRUE))

#不加载R包使用其中的数据集

data(Chile,package="car")

Chile

#>data(Chile,package="car")

#Warning message:

#  In data(Chile, package = "car") : data set ‘Chile’ not found

#>Chile

#Error: object 'Chile' not found

install.packages("car")

library("car")

help("Chile")

多元线性回归 是 简单线性回归 的扩展,用于基于多个不同的预测变量(x)预测结果变量(y)。

例如,对于三个预测变量(x),y​​的预测由以下等式表示: y = b0 + b1*x1 + b2*x2 + b3*x3

回归贝塔系数测量每个预测变量与结果之间的关联。“ b_j”可以解释为“ x_j”每增加一个单位对y的平均影响,同时保持所有其他预测变量不变。

在本节中,依然使用 datarium 包中的 marketing 数据集,我们将建立一个多元回归模型,根据在三种广告媒体(youtube,facebook和报纸)上投入的预算来预测销售。计算公式如下: sales = b0 + b1*youtube + b2*facebook + b3*newspaper

您可以如下计算R中的多个回归模型系数:

请注意,如果您的数据中包含许多预测变量,则可以使用 ~. 以下命令将模型中的所有可用变量简单地包括在内:

从上面的输出中,系数表显示β系数估计值及其显着性水平。列为:

如前所述,您可以使用R函数轻松进行预测 predict() :

在使用模型进行预测之前,您需要评估模型的统计显着性。通过显示模型的统计摘要,可以轻松地进行检查。

显示模型的统计摘要,如下所示:

摘要输出显示6个​​组件,包括:

解释多元回归分析的第一步是在模型摘要的底部检查F统计量和关联的p值。

在我们的示例中,可以看出F统计量的p值<2.2e-16,这是非常重要的。这意味着 至少一个预测变量与结果变量显着相关

要查看哪些预测变量很重要,您可以检查系数表,该表显示了回归beta系数和相关的t统计p值的估计。

对于给定的预测变量,t统计量评估预测变量和结果变量之间是否存在显着关联,即,预测变量的beta系数是否显着不同于零。

可以看出,youtube和facebook广告预算的变化与销售的变化显着相关,而报纸预算的变化与销售却没有显着相关。

对于给定的预测变量,系数(b)可以解释为预测变量增加一个单位,同时保持所有其他预测变量固定的对y的平均影响。

例如,对于固定数量的youtube和报纸广告预算,在Facebook广告上花费额外的1000美元,平均可以使销售额增加大约0.1885 * 1000 = 189个销售单位。

youtube系数表明,在所有其他预测变量保持不变的情况下,youtube广告预算每增加1000美元,我们平均可以预期增加0.045 * 1000 = 45个销售单位。

我们发现报纸在多元回归模型中并不重要。这意味着,对于固定数量的youtube和报纸广告预算,报纸广告预算的变化不会显着影响销售单位。

由于报纸变量不重要,因此可以 将其从模型中删除 ,以提高模型精度:

最后,我们的模型公式可以写成如下:。 sales = 3.43+ 0.045*youtube + 0.187*facebook

一旦确定至少一个预测变量与结果显着相关,就应该通过检查模型对数据的拟合程度来继续诊断。此过程也称为拟合优度

可以使用以下三个数量来评估线性回归拟合的整体质量,这些数量显示在模型摘要中:

与预测误差相对应的RSE(或模型 sigma )大致代表模型观察到的结果值和预测值之间的平均差。RSE越低,模型就越适合我们的数据。

将RSE除以结果变量的平均值将为您提供预测误差率,该误差率应尽可能小。

在我们的示例中,仅使用youtube和facebook预测变量,RSE = 2.11,这意味着观察到的销售值与预测值的平均偏差约为2.11个单位。

这对应于2.11 / mean(train.data $ sales)= 2.11 / 16.77 = 13%的错误率,这很低。

R平方(R2)的范围是0到1,代表结果变量中的变化比例,可以用模型预测变量来解释。

对于简单的线性回归,R2是结果与预测变量之间的皮尔森相关系数的平方。在多元线性回归中,R2表示观察到的结果值与预测值之间的相关系数。

R2衡量模型拟合数据的程度。R2越高,模型越好。然而,R2的一个问题是,即使将更多变量添加到模型中,R2总是会增加,即使这些变量与结果之间的关联性很小(James等,2014)。解决方案是通过考虑预测变量的数量来调整R2。

摘要输出中“已调整的R平方”值中的调整是对预测模型中包含的x变量数量的校正。

因此,您应该主要考虑调整后的R平方,对于更多数量的预测变量,它是受罚的R2。

在我们的示例中,调整后的R2为0.88,这很好。

回想一下,F统计量给出了模型的整体重要性。它评估至少一个预测变量是否具有非零系数。

在简单的线性回归中,此检验并不是真正有趣的事情,因为它只是复制了系数表中可用的t检验给出的信息。

一旦我们开始在多元线性回归中使用多个预测变量,F统计量就变得更加重要。

大的F统计量将对应于统计上显着的p值(p <0.05)。在我们的示例中,F统计量644产生的p值为1.46e-42,这是非常重要的。

我们将使用测试数据进行预测,以评估回归模型的性能。

步骤如下:

从上面的输出中,R2为 0.9281111 ,这意味着观察到的结果值与预测的结果值高度相关,这非常好。

预测误差RMSE为 1.612069 ,表示误差率为 1.612069 / mean(testData $ sales) = 1.612069/ 15.567 = 10.35 % ,这很好。

本章介绍了线性回归的基础,并提供了R中用于计算简单和多个线性回归模型的实例。我们还描述了如何评估模型的性能以进行预测。