本文主要介绍以下内容:
R语言中线性回归方程拟合函数lm()Lm()是R语言中拟合线性回归函数。官方文档对他的用法解释是这样的: 官方文档用法解释 官方文档参数比较多,明明同学感觉没有必要研究那么多,这里明明同学讲解最常用的方法即: lm(formula, data) formula:表示你要拟合的公式,一般有以下几种 公式中特殊符号表达的含义为: Data:你要拟合的数据集 下面明明同学以一元线性的例子为大家介绍如何使用R语言做回归分析(本部分数据为UsingR包里面的父亲身高和儿子身高数据)。 一元线性回归这是最简单的回归形式,用于确定两个变量之间的关系。也就是说,给定一个变量,回归告诉我另外一个变量的期望值是多少。分析中所形成的这种关系称为回归模型,其中以一条直线方程表明两个变量依存关系的模型叫做一元线性模型也称为简单的线性回归。其主要步骤包括:建立回归模型、求解回归模型中的参数、对回归模型进行检验。 UsingR包里面的父亲身高和儿子身高数据(单位英尺) 用ggplot2包的ggplot函数做散点图查看数据大致趋势 R语言代码 父亲身高和儿子身高散点图 从图中可以看出数字大致成直线分布,此时用ggplot2包中的geom_smooth(method='lm')为图形添加线性回归直线查看直线位置和走势。 添加回归模型之后的图 到此我们把回归模型的图做出来了,但是这个图并没有把结果提供给我们,所以我们在R语言中用lm()函数来实际计算回归方程。过程如下图 从图结果中红色框框可以看出拟合的模型截距项为33.886,fheight的系数为0.51409。所以拟合的方程结果为sheight = 0.51409fheight + 33.886。从结果中还可以看出R2为0.2513,F检验值为361.2自由度为(1,1076),系数P检验值和模型P检验值都小于0.05,于是在α=0.05水平处拒绝H0,接受H1,即本例回归系数有统计学意义,两个变量之间有显著的回归关系。 使用plot(模型拟合结果)查看模型拟合图 Q-Q图 正态性当预测变量值固定时,因变量成正态分布,则残差值也应该是一个均值为0的正态分布。正态Q-Q图(Normal Q-Q,右上)是在正态分布对应的值下,标准化残差的概率图。若满足正态假设,那么图上的点应该落在呈45度角的直线上;若不是如此,那么就违反了正态性的假设。 模型Q-Q图 残差图与拟合图 变量之间线性是否好,在'残差图与拟合图'( Residuals vs Fitted)中如果是一条直线说明变量之间线性关系很好。 模型残差图与拟合图 位置尺度图 同方差性若满足不变方差假设,那么在位置尺度图(Scale-Location Graph)中,水平线周围的点应该随机分布 库克距离 用来查看数据是否有异常点,一般指有着很大残差(绝对值)的点,如果对模型的参数估计值影响出现了比例失衡,那么我们称之为强影响点。库克距离能够查看異常点的分布。 R语言广义线性模型glm()函数广义线性模型现实生活中并非所有的数据都适合用线性回归模型,像二项分布(真/假)数据、计数数据或者其他的数据形式都不适合。为了模拟这些类型的数据、发展了广义线性模型。 广义线性模型glm(): glm(formula , family=gaussian , data,…) formula:的写法可以参考lm()函数,公式写法是一样的。 Family 为分布族,包括正态分布(gaussian)、二项分布(binomial)、泊松分布(poisson)和伽马分布(gamma),分布族还可以通过选项Link = 来指定使用的链接函数。 常用的链接函数: 二项族里有logit 、probit 、 cauchit 、 log 、 cloglog ;伽马族有inverse、identify、log;泊松族有log、identify、和sqrt。 Data 是数据框 实例: 我们对45名驾驶员调查结果进行如下统计: x1 : 表示视力状况,是一个分类变量,1表示好,0表示有问题; x2 : 年龄,数值型 x3 : 驾车教育,分类变量 1表示参加过驾车教育 , 0 表示没有 y :分类变量 表示去年是否出过事故 , 1表示出过事故 , 0表示没有 45名驾驶员调查结果 我们这里考查前三个变量x1 , x2 , x3与发生事故的关系 这里用逻辑斯蒂进行回归拟合 由结果可知,x2 和 x3并没有通过检验,下一步用step()函数,逐步回归在进行变量的筛选。 看出最终只有变量x1入选模型。然后对模型就行预测,即对视力正常的和视力有问题的司机分别作预测,即预测发生交通事故的概率。 由此可见眼睛有问题的司机的交通事故率是眼睛正常的司机交通事故率的差不多两倍。 下次明明同学给大家讲解如何在R语言中轻松实现判别分析。 查看历史文章学习更多数据分析技巧、EXCEL和PPT使用技巧 有任何问题可以私信明明同学,帮助你解决数据分析的难处。 |
|