分享

生物统计(5)-简单线性回归

 微笑如酒 2018-09-03

前言

由于公众号对公式的支持不太好,因此,涉及公式的地方都直接截图了,如果想要看最原始的版本,可以去我博客上看,单阅读原文即可。有关线性回归的一些基础知识,可以参看这篇笔记《StatQuest学习笔记05——线性模型》

上周四讲的方差分析时,里面有一处错误,在进行单因素方差分析时,要求各个样本正态分布,因此要对不同的组分别用shapiro.test()函数进行正态检验,原文是对全部的数据进行了正态检验,在此说明一下。

直线回归的概念

为了直观地说明直线回归的概念,我们以8名儿童的年龄(岁)与其尿肌酐含量(mmol/24h)数据绘制出一个散点图(scatter plot),原始数据如下所示:

现在绘图出这些数据的散点图,如下所示:

library(ggplot2)
age <>13,11,9,6,8,10,12,7)
cr <>3.54,3.01,3.09,2.48,2.56,3.36,3.18,2.65)
data001 <>
ggplot(data001, aes(x=age, y=cr)) + geom_point(size=3,shape=21)

图表如下所示:

在定量描述儿童尿肌酐含量与年龄数据的依存关系时,将年龄称为自变量(independent variable),用X表示,尿肌酐含量称为应变量(dependent variable),用Y表示。由上图可知,尿肌酐含量Y随年龄X的增加而增大,呈直线趋势,但这8个数据点并非恰好全在一条直线上,不过我们可以找到一条最合适的直线来代表这两个变量的关系,这条曲线可以称为最佳拟合线,这两个变量的这种关系称为直线回归(linear regression)简单回归(simple regression)。

注:回归和分类的区别

如果因变量为取值广泛的定量变量(数量变量),通常称该模型为回归(regression),如果因变量为定性变量(分数变量),通常称建模为分类(classification)或判断分析(discriminant analysis);如果没有给出因变量,要根据自变量本身来对以没值分类,则称为聚类分析(cluster analysis)。《从概念到数据分析》(吴喜之)。

直线回归可以用以下直线回归方程(linear regression equation)来表示,如下所示:

公式(一)称为经验回归方程或样本回归方程,其中b表示这条方程的斜率,a表示这个方程在y轴上的截矩,它们表示利用样本的数据估计得得来的截矩和斜率。我们可以通过一系列的计算求出这个方程的a和b,这个方程是对两变量总体间线性关系的一个估计,根据散点图可以假设,对于X的各个取值,相应Y的总体均数在一条直线上,如下所示:

总体均数表示为:

除了图中所示两变量呈直线关系外,一般还假定每个X对应Y的总体为正态分布,各个正态分布的总体方差相等且各次观测相互独立,这样公式(一)中的Y(带^符号)实际上是x所对应Y的总体均数的一个样本估计值,称为回归方程的预测值(predicted value),而a、 b分别为α和β的样本估计,其中a称为常数项,b称为回归系数(coefficient of regression),b是直线的斜率(slope),其统计意义是,当X变化一个单位时,Y的平均改变的估计值,b>0时,直线从左下方走到右上方,Y随X的增大而增大,当b<>

直线回归方程的计算思路

如果能够从样本数据中求得a和b的数值,那么回归方程即可唯一确定,从散点图上来看,求解a和b实际上就是怎么找到一条最能代表数据点分布趋势的直线,将实测值Y与假定回归线上估计值Y(带^符号的纵向距离称为残差(residual),如果把残差进行了均一化,即进行了z转换,那它就是标准化残差,其中对于要找到的这条最佳的直线,它的残差平方和(sum of squared residuals, sum of squared errors或residual sum of squares,简称为SSE或RSS等)是最小的,这就是最小二乘法(Least sum of squares,LS)的思想(因为古中国的数学家在描述平方时,使用的术语是“二乘”,因此这里叫最小二乘法),如下所示:

在一定假设条件下,如此得到的回归系数最为理解,按照这一原则,数学上可以很容易得到a和b的计算公式,如下所示:

其中,LXX是X与Y的均离均差平交叉乘积和,简称离均差积和,公式为:

除了用公式(一)来表示两变量线性回归关系,还可以在散点图上绘制出样本回归直线作为一种直

观的统计描述补充形式,此直线必然通过点X的均值和Y的均值(数学符号为X上面一横,Y上面一横),且与纵坐标轴相关于截矩a,如果散点图没有从坐标系原点开始,可以在自变量实测范围内远端取易于读取的X值代入回归方程得到一个点的坐标,连接此点与点X的均值和Y的均值也能绘制出回归直线。

现在再看一下原始数据:

由原始数据与散点图可知,两变量之间呈直线趋势,因此可以计算出相应的参数:

线性回归方程的计算过程

第一步:计算出X、Y的均值,如下所示:

第二步:计算出回归系数b和截矩a

根据公式(三),b=5.8450/42=0.1392

根据公式(四),a=2.9838-(0.1392)(9.5)=1.667

列出直线回归方程,如下所示:

R计算结果如下所示:

> lm(cr~age)

Call:
lm(formula = cr ~ age)

Coefficients:
(Intercept)          age  
     1.6617       0.1392 

直线回归中的统计推断

回归方程的假设检验

建立样本直线回归方程,只是完成了统计分析中两个变量关系的描述,研究者还必须要回答它所来自总体的直线回归关系是否确实存在,即是否对总体有β≠0(β就是自变量与因变量的相关系数),如下图所示,无论X如何取值,Y的总体均值总在一条水平线上,即β=0,总体直线回归方程并不成立,也就是说Y与X无直接线性关系,然而在一次随机抽样中,如果所得的样本为实心圆点所示,则会得到一个并不等于0的样本回归系数b,b与0相关多大可以认为具有统计学意义?这就需要方差分析或与其等价的t检验来说明问题。

方差分析检验

先看一张图,如下所示:

在上图中,任意一点P的纵坐标被回归直线与均数截成三个线段,其中:

由于P点是散点图中任取的一点,将全部数据点都这样处理,并将等式两端平方后再求和,可以证明:

那么有以下的公式:

上面的公式用符号表示就是:

其中SS总是Y的离均差平方和,表示未考虑Y与X的回归关系时,Y的总变异。

SS回是回归平方和,由于特定样本的均数是固定的,因此这部分变异由Y的大小不同引起,当X被引物回归以后,正是由于X的不同导致了预测值Y的不同,所以,SS回就反映了在Y的总变异中可以用Y与X的直线关系解释的那部分变异,b离0越远,Y受X的影响越大,SS回就越大,说明回归效果就越好。

SS残为残差平方和。它反映了除了X对Y的线性影响之外的一切因素对Y的变异的作用,也就是在总平方和中无法用X解释的部分,表示考虑回归之后Y真正的随机误差,在散点图中,各实测点离回归直线越近,SS残也就越小,说明直线回归的估计误差越小,回归的作用就越明显。

如果在R中对线性回归进行方差分析的,可以使用anova()函数提取线性回归的方差分析结果,如下所示:

anova(lm(cr~age))
Analysis of Variance Table

Responsecr
          Df  Sum Sq Mean Sq F value   Pr(>F)   
age        1 0.81343 0.81343  20.968 0.003774 **
Residuals  6 0.23276 0.03879                    
---
Signifcodes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

t检验
对于β=0这一假设是否成立还可以进行如下t检验,如下所示:

这里要说明一下,两个变量关系的密切程度或数量上的影响大小的统计量是相关系数或者是另归系数的绝对值r,而不是假设检验的p值,p值越小,只能说越有理由认为变量间的直线关系存在,而不能说关系越密切或越“显著”。另外,直线回归用于预测时,其适用范围一般不应超出样本中自变量的取值范围,此时求得的预测值称内插(interpolation),而超过自变量取值范围所得预测值称为外延(extrapolation),若无充分理由说明现有自变量范围以外的两变量间仍然是直线关系,应尽量避免不合理的外延,举个例子,我们在使用BCA测蛋白浓度时,标准品的浓度范围是0-0.5ug/uL,我们构建的线性回归方程是蛋白浓度=a X OD562 + b,如果我们的样本OD562的吸光度超过了标准品最高浓度的OD562的值(例如标准品0.5ug/uL的OD562值是0.4,我的蛋白样本的OD562的值是0.45),那么此时,我们使用求出来的线性回归方程来计算蛋白样本中的蛋白浓度是不太准的。

在R中线性回归结果进行t检验的话,直接使用summary()函数即可,如下所示:

> result <>
> summary(result)

Call:
lm(formula = cr ~ age)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.21500 -0.15937 -0.00125  0.09583  0.30667 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)  1.66167    0.29700   5.595  0.00139 **
age          0.13917    0.03039   4.579  0.00377 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.197 on 6 degrees of freedom
Multiple R-squared:  0.7775,    Adjusted R-squared:  0.7404 
F-statistic: 20.97 on 1 and 6 DF,  p-value: 0.003774

结果解释:

  1. 其中0.4.579是对系数(斜率)是否为零t的检验,t=4.579,p<>

  2. Residual standard error: 0.197 on 6 degrees of freedom,这个是残差,自由度为6

  3. Multiple R-squared: 0.7775, Adjusted R-squared: 0.7404,R平方,叫测定系数或可决系数,越接近于1表示两者的线性关系越好。

  4. F-statistic: 20.97 on 1 and 6 DF, p-value: 0.003774,F检验,p值小于0.01,在只一个自变量的情况下,F检验的p值与t检验的p值在数值上相等,并且F的值等于t值的平方。

总体回归系数β的可信区间

利用回归方程进行估计和预测

总体均数的可信区间

个体Y值的预测区间

预测应时把自变量X代入到回归方程,对总体中的应变量量Y的个体值进行预测,给定X的数值X0,对应的个体Y值也存在一个波动范围,其标准差按公式十六计算,如下所示:

在上图中,有两条虚曲线,这两条虚曲线比实曲线范围更宽,它也是中间窄,两头宽,同样在X0=X均值处最窄。

需要注意的是,在给定X=X0处,相应Y的均数的置信区间与其个体Y值的预测区间的含义是不同的:前者表示在固定的X0处,如果反复抽样100次,可以算出100个相应Y的总体均数的置信区间,平均有100x(1-α)个置信区间包含总体均数;后者表示的是一个预测值的取值范围,即预测100个个体值中平均将有100x(1-α)个个体值在求出的范围内。

现在用R来计算一下,如下所示:

> data94 <>12)
> predict(result,data94,interval='prediction',level=0.95# 预测区间
       fit      lwr      upr
1 3.331667 2.787731 3.875602
> predict(result,data94,interval='confidence',level=0.95# 均数的可信区间
       fit      lwr      upr
1 3.331667 3.079481 3.583852

参考资料

  1. 医学统计学.第四版.孙振球

  2. 深入浅出统计学

  3. 医学统计学及SAS应用.王炳顺

  4. 多元统计分析及R语言建模.王会斌


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多