R语言数据分析系列之七

R语言数据分析系列之七

—— by comaple.zhang

回归分析建模是数据分析里面很重要的一个应用之一,即通过使用已有的自变量的值建立某种关系,来预测未知变量(因变量)的值。如果因变量是连续的那就是回归分析,如果因变量为离散的,可以理解为是分类。在机器学习算法中,不管是连续变量预测还是离散的变量预测,我们都称之为有监督学习。

回归分析可以用来做广告点击率预测也可以用来做销量预测,app各种指标预测,或者库存量,分仓铺货预测等。既然如此神奇,那么我们就来看一下回归是如何做到的。

数据集

我们本节利用women数据集,做一些简单的预测。

一元线性回归分析

输入:一元自变量x,一元因变量y,寻找y与x的关系,

线性模型假设:

模型误差:

目标:找到参数w和b使得误差平方和最小即

方法:最小二乘法,为了求得w,b使得上式成立,我们可以对参数求偏导数,令偏导数等于零,来求解。

在R语言里面线性回归可以用lm函数来拟合数据集,假如我们要预测女性身高对体重的影响,那么可以建模为简单地线性模型即:weight = w * height + b用R语言来实现很简单如下:

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

Residuals:

Min      1Q  Median     3Q     Max

-1.7333 -1.1333 -0.3833  0.7417 3.1167

Coefficients:

Estimate Std. Error t value Pr(>|t|)

(Intercept) -87.51667    5.93694 -14.74 1.71e-09 ***

height        3.45000    0.09114  37.85 1.09e-14 ***

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’1

Residual standard error: 1.525 on 13degrees of freedom

Multiple R-squared:  0.991,       AdjustedR-squared:  0.9903

F-statistic:  1433 on 1 and 13 DF,  p-value: 1.091e-14

在summary的结果中我们可以看到,Intercept截距为b的值,height即为w的值

结果验证:

有了这个模型是否适合呢,或者适合的程度有多大,我们从summary的结果可以分析得到,首先是Residual standard error,值得是预测结果和实际值得残差的均方值即RMSE该值越小证明模型越好,AdjustedR-squared:该值为r方值,也就是自变量与因变量的相关程度,可理解为模型对数据集的解释程度,p-value: 该值为T检验,一般认为<0.005时模型参数通过检验。

我们通过绘图直观的观察一下:

plot(women$height,women$weight,main='简单线性回归',family='STKaiti')
lines(women$height,fitted(fit),col=’red’)

多项式回归分析

输入:多元回归的输入为一个向量,即X是一组变量

而对应的参数W也应该是一个向量

回归模型假设为:

我们可以把模型化简:

于是模型简化为:

模型误差:

目标:通过学习找到一个向量使得模型误差的平方和最小,即模型的损失函数如下

下面我的目标就是要优化这个W向量使得我们的损失函数最小化。我们可以进行矩阵运算,对w求偏导数,并令结果等于0,通过推到整理我们可以得到如下结果:

这样我们只通过矩阵运算来求得W向量的值。

下面基于R来实现一个简单的多远回归,在R中已经实现了一个最小二乘法的回归模型,我们一样还是直接调用即可,我们依然采用women数据集,并将weight变量做平方变换,即模型公式为:

R语言实现:

fit2 <- lm(weight ~height+I(height^2),data=women)
plot(women$height,women$weight,main='多项式回归,weight= height + height^2',family='STKaiti')
lines(women$height,fitted(fit2),col=’red’)
summary(fit2)

Call:

lm(formula = weight ~ height + I(height^2),data = women)

Residuals:

Min       1Q   Median      3Q      Max

-0.50941 -0.29611 -0.00941  0.28615 0.59706

Coefficients:

Estimate Std. Error t value Pr(>|t|)

(Intercept) 261.87818   25.19677 10.393 2.36e-07 ***

height      -7.34832    0.77769  -9.449 6.58e-07 ***

I(height^2)   0.08306   0.00598  13.891 9.32e-09 ***

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’1

Residual standard error: 0.3841 on 12degrees of freedom

Multiple R-squared:  0.9995,     AdjustedR-squared:  0.9994

F-statistic: 1.139e+04 on 2 and 12 DF,  p-value: < 2.2e-16

从结果我们可以看出,RMSE减少到0.38残差均方值变小,R方值变大0.999更好的拟合了真是数据,Pr(>|t|)该值是对应参数的T检验,明显小于0.005各参数均通过检验。最后上图如下:

时间: 2024-11-08 12:37:49

R语言数据分析系列之七的相关文章

R语言数据分析系列之九 - 逻辑回归

R语言数据分析系列之九 -- by comaple.zhang 本节将一下逻辑回归和R语言实现,逻辑回归(LR,LogisticRegression)其实属于广义回归模型,根据因变量的类型和服从的分布可以分为,普通多元线性回归模型,和逻辑回归,逻辑回归是指因变量是离散并且取值范围为{0,1}两类,如果离散变量取值是多项即变为 multi-class classification,所以LR模型是一个二分类模型,可以用来做CTR预测等.那么我们现在来引出逻辑回归如何做二分类问题. 问题引入 在多元线

R语言数据分析系列六

R语言数据分析系列六 -- by comaple.zhang 上一节讲了R语言作图,本节来讲讲当你拿到一个数据集的时候怎样下手分析,数据分析的第一步.探索性数据分析. 统计量,即统计学里面关注的数据集的几个指标.经常使用的例如以下:最小值,最大值,四分位数,均值,中位数,众数,方差,标准差.极差,偏度,峰度 先来解释一下各个量得含义,浅显就不说了,这里主要说一下不常见的 众数:出现次数最多的 方差:每一个样本值与均值的差得平方和的平均数 标准差:又称均方差,是方差的二次方根.用来衡量一个数据集的

R语言数据分析系列之八

R语言数据分析系列之八 -- by comaple.zhang 再谈多项式回归,本节再次提及多项式回归分析,理解过拟合现象,并深入cross-validation(交叉验证),regularization(正则化)框架,来避免产生过拟合现象,从更加深入的角度探讨理论基础以及基于R如何将理想照进现实. 本节知识点,以及数据集生成 1,        ggplot2进行绘图; 2,        为了拟合更复杂的数据数据集采用sin函数加上服从正太分布的随机白噪声数据; 3,        poly

R语言数据分析系列之五

R语言数据分析系列之五 -- by comaple.zhang 本节来讨论一下R语言的基本图形展示,先来看一张效果图吧. 这是一张用R语言生成的,虚拟的wordcloud云图,详细实现细节请參见我的github项目:https://github.com/comaple/R-wordcloud.git 好了我们開始今天的旅程吧: 本节用到的包有:RColorBrewer用来生成序列颜色值, plotrix三维图形 本节用到的数据集:vcd包中的Arthritis数据集 数据集 install.pa

R语言数据分析系列之六

R语言数据分析系列之六 -- by comaple.zhang 上一节讲了R语言作图,本节来讲讲当你拿到一个数据集的时候如何下手分析,数据分析的第一步,探索性数据分析. 统计量,即统计学里面关注的数据集的几个指标,常用的如下:最小值,最大值,四分位数,均值,中位数,众数,方差,标准差,极差,偏度,峰度 先来解释一下各个量得含义,浅显就不说了,这里主要说一下不常见的 众数:出现次数最多的 方差:每个样本值与均值的差得平方和的平均数 标准差:又称均方差,是方差的二次方根,用来衡量一个数据集的集中性

R语言数据分析系列之三

R语言数据分析系列之三 -- by comaple.zhang 上次讲了vector这次讲matrix,array,dataframe,ts 数据结构 matrix 矩阵 R语言中矩阵可以理解为是由两个及两个以上的向量组成. 矩阵创建 从向量创建 > x <- sample(1:100,16) > x [1] 14 43 89  3 96 58 61 75 33 66 24 54 45 15  6 44   > m <- matrix(x)   > m         

R语言数据分析系列之四

R语言数据分析系列之四 -- by comaple.zhang 说到统计分析我们就离不开随机变量,所谓随机变量就是数学家们为了更好的拟合现实世界的数据而建立的数学模型.有了她我们甚至可以来预测一个网站未来几天的日访问用户,股票的未来走势等等.那么本节我们来一起探讨以下常用的函数分布,以及流程控制语句. 常见分布有:正态分布(高斯分布),指数分布,beta分布,gamma分布等. 正态分布 若随机变量X服从一个数学期望为μ.方差为σ^2的正态分布,记为N(μ,σ^2).其概率密度函数曲线,由正态分

R语言多元分析系列

R语言多元分析系列之一:主成分分析 主成分分析(principal components analysis, PCA)是一种分析.简化数据集的技术.它把原始数据变换到一个新的坐标系统中,使得任何数据投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推.主成分分析经常用减少数据集的维数,同时保持数据集的对方差贡献最大的特征.这是通过保留低阶主成分,忽略高阶主成分做到的.这样低阶成分往往能够保留住数据的最重要方面.但是在处理观测数目小于变量数目时无法发挥

R语言速成实战 R语言数据分析实战

详情请交流  QQ  709639943 00.R语言速成实战 00.R语言数据分析实战 00.Python+Django+Ansible Playbook自动化运维项目实战 00.Java深入微服务原理改造房产销售平台 00.Python3入门机器学习 经典算法与应用 00.老司机学python篇:第一季(基础速过.机器学习入门) 00.Python 从入门到精通 78节.2000多分钟.36小时的高质量.精品.1080P高清视频教程!包括标准库.socket网络编程.多线程.多进程和协程.