美文网首页
从回归到临床模型(一)

从回归到临床模型(一)

作者: cHarden13 | 来源:发表于2020-03-04 21:18 被阅读0次

    一.回归基础知识

    二.线性回归

    1.拟合线性模型

    2.简单线性模型

    3.多项式回归

    4.多元线性回归

    5.回归诊断

    6.改进措施

    7.选择最佳的回归模型

    8.回归模型的深层次分析

    一.回归基础知识

    目前对回归的概念还有些模糊,把基本概念再复习一遍。
    统计上的t检验和F检验,是比较某一定量变量(平均值)在两组或多组间差别,也叫单变量统计(univariate statistics)。例如课本上t检验里两相关样本均数比较,比较女性植入硅胶体手术前后血中的硅脂含量,就是比较血中的硅脂含量在术前组和术后组的差别。
    然而在医学研究中,人们常要研究两个变量的相互关系,如年龄和高血压、DM患者血糖与胰岛素水平,这种统计方法叫双变量关系统计(bivariate statistics)。
    回归与相关:如果描述两个变量相关关系的方向和密切程度(正负相关?相关系数?),采用简单线性相关的分析方法。如果要表达自变量和应变量相互数量变化的依存关系,采用简单线性回归的分析方法。
    回归分类:

    回归分析的各种变体 回归分类
    应用直线回归分析应注意的问题
    1. 作回归分析要有实际意义。
    2. 进行直线回归分析前,应绘制散点图。作用:①看散点是否呈直
      线趋势;② 有无异常点、高杠杆点和强影响点。
    3. 注意建立线性回归模型的基本条件:线性、独立性、正态性、方
      差齐性
    4. 直线回归方程的适用范围以求回归方程时X的实测值范围为限;
      若无充分理由证明超过该范围还是直线,应避免外延。
    5. 两变量有线性关系,不一定是因果关系,也不一定表明两变量间
      确有内在联系。
    如何绘制二个变量的关系?

    用car包中的scatterplot()函数
    绘制散点图如下:

    library(car)
    scatterplot(weight ~ height, data=women,
    spread=FALSE, smoother.args=list(lty=2), pch=19,
    main="Women Age 30-39",
    xlab="Height (inches)",
    ylab="Weight (lbs.)")
    
    散点图

    二.线性回归

    1.拟合线性模型

    在R中,拟合线性模型最基本的函数就是lm()

    myfit <- lm(formula, data)
    

    formula指要拟合的模型形式, data是一个数据框,formula形式如下:
    Y ~ X1 + X2 + ... + Xk
    ~左边为响应变量,右边为各个预测变量,预测变量之间用+符号分隔。


    常用表达符号

    对线性拟合模型有用的其他函数:


    函数

    当回归模型包含一个因变量和一个自变量时,我们称为简单线性回归。当只有一个预测变量,但同时包含变量的幂(比如, X、 X^2、 X^3)时,我们称为多项式回归。当有不止一个预测变量时,则称为多元线性回归。

    2.简单线性模型

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

    3.多项式回归

    通过2的图表明,可以在2里通过添加一个二次项(即X2)来提高回归的预测精度。

    fit2 <- lm(weight ~ height + I(height^2), data=women)
    

    此时模型的方差解释率已经增加到了99.9%。


    多项式等式

    4.多元线性回归

    当预测变量不止一个时,简单线性回归就变成了多元线性回归。
    以基础包中的state.x77谋杀数据集为例。我们想探究一个州的犯罪率(murder)和其他因素的关系,包括人口(population)、文盲率(Illiteracy)、平均收入(Income)和结霜天数(温度在冰点以下的平均天数)(Frost)。

    4.1同样第一步,先检查变量的相关性。

    states <- as.data.frame(state.x77[,c("Murder", "Population",
    "Illiteracy", "Income", "Frost")]) #states数据集
    library(car)
    >scatterplotMatrix(states, spread=FALSE, smoother.args=list(lty=2),
    main="Scatter Plot Matrix")
    
    

    4.2 构建模型

    fit <- lm(Murder ~ Population + Illiteracy + Income + Frost,
    data=states)
    
    结果各项意义

    纳入自变量的方法:逐步回归法和最佳子集法。

    5.回归诊断

    我们使用的是lm()函数来拟合OLS(最小二乘法)回归模型。但是,没有任何输出告诉你模型是否合适,你对模型参数推断的信心依赖于它在多大程度上满足OLS模型统计假设。因此我们要对模型进行诊断。

    在实际中应先使用5.5的方法对模型进行综合诊断,当综合诊断不满足时,再使用5.1-5.4的诊断找出问题。

    car包提供了大量函数,大大增强了拟合和评价回归模型的能力.
    为理解这些图形,我们来回顾一下OLS回归的统计假设。
    正态性 当预测变量值固定时,因变量成正态分布,则残差值也应该是一个均值为0的正态分布。“正态Q-Q图”( Normal Q-Q)是在正态分布对应的值下,标准化残差的概率图。若满足正态假设,那么图上的点应该落在呈45度角的直线上;若不是如此,那么就违反了正态性的假设。
    独立性 你无法从这些图中分辨出因变量值是否相互独立,只能从收集的数据中来验证。假若你发现数据是从一个家庭抽样得来的,那么可能必须要调整模型独立性的假设。
    线性 若因变量与自变量线性相关,那么残差值与预测(拟合)值就没有任何系统关联。换句话说,除了白噪声,模型应该包含数据中所有的系统方差。如果在“残差图与拟合图”( Residuals vs Fitted,)中可以清楚地看到一个曲线关系,这暗示着你可能需要对回归模型加上一个二次项。
    同方差性 若满足不变方差假设,那么在“位置尺度图”( Scale-Location Graph)中,水平线周围的点应该随机分布。

    以基础包中的state.x77谋杀数据集为例,我们想探究一个州的犯罪率和其他因素的关系,包括人口、文盲率、平均收入和结霜天数(温度在冰点以下的平均天数)。

    5.1正态性

    qqPlot()函数提供了更为精确的正态假设检验方法,它画出了在n–p–1个自由度的t分布下的学生化残差( studentized residual,也称学生化删除残差或折叠化残差)图形,其中n是样本大小, p是回归参数的数目(包括截距项)。代码如下:

    library(car)
    states <- as.data.frame(state.x77[,c("Murder", "Population",
    "Illiteracy", "Income", "Frost")])
    fit <- lm(Murder ~ Population + Illiteracy + Income + Frost, data=states)
    qqPlot(fit, labels=row.names(states), id.method="identify",
    simulate=TRUE, main="Q-Q Plot")
    
    Q-Q

    点落在95%置信区间内说明满足正态性。除了Nevada,所有的点都离直线很近,并都落在置信区间内,这表明正态性假设符合得很好。但是你也必须关注Nevada,它有一个很大的正残差值(真实值-预测值),表明模型低估了该州的谋杀率。


    Nevada
    5.2误差的独立性

    之前章节提过,判断因变量值(或残差)是否相互独立,最好的方法是依据收集数据方式的先验知识。例如,时间序列数据通常呈现自相关性——相隔时间越近的观测相关性大于相隔越远的观测。 car包提供了一个可做Durbin-Watson检验的函数,能够检测误差的序列相关性。在多元回归中,使用下面的代码可以做Durbin-Watson检验:

     durbinWatsonTest(fit)
    #lag Autocorrelation D-W Statistic p-value
    # 1   -0.201         2.32           0.282
    #Alternative hypothesis: rho != 0
    

    p值不显著( p=0.282)说明无自相关性,误差项之间独立。滞后项( lag=1)表明数据集中每个数据都是与其后一个数据进行比较的。该检验适用于时间独立的数据,对于非聚集型的数据并不适用。

    5.3 线性

    通过成分残差图( component plus residual plot)也称偏残差图( partial residual plot),你可以看看因变量与自变量之间是否呈非线性关系,也可以看看是否有不同于已设定线性模型的系统偏差,图形可用car包中的crPlots()函数绘制。

    library(car)
    crPlots(fit)
    
    成分残差图

    这个图纵坐标是成分+残差,横坐标是因素,正常应为线性。若图形存在非线性,则说明你可能对预测变量的函数形式建模不够充分,那么就需要添加一些曲线成分,比如多项式项,或对一个或多个变量进行变换(如用log(X)代替X),或用其他回归变体形式而不是线性回归。

    5.4 同方差性
    library(car)
    ncvTest(fit)
    #Non-constant Variance Score Test
    #Variance formula: ~ fitted.values
    #Chisquare=1.7 Df=1 p=0.19
    >spreadLevelPlot(fit)
    #Suggested power transformation: 1.2
    

    可以看到,计分检验不显著( p=0.19),说明满足方差不变假设。图里点在水平的最佳拟合曲线周围呈水平随机分布。


    不变方差
    5.5 线性模型假设的综合验证

    gvlma包中的gvlma()函数能对线性模型假设进行综合验证,同时还能做偏斜度、峰度和异方差性的评价。换句话说,它给模型假设提供了一个单独的综合检验(通过/不通过)。

    library(gvlma)
    gvmodel <- gvlma(fit)
    summary(gvmodel)
    #如果前边用glm拟合的函数,那么将gvlma换为gvlma.form
    
    综合检验
    5.6多重共线性

    假设你正在进行一项握力研究,自变量包括DOB( Date Of Birth,出生日期)和年龄。你用握力对DOB和年龄进行回归, F检验显著, p<0.001。但是当你观察DOB和年龄的回归系数时,却发现它们都不显著(也就是说无法证明它们与握力相关)。到底发生了什么呢?
    原因是DOB与年龄在四舍五入后相关性极大。回归系数测量的是当其他预测变量不变时,某个预测变量对响应变量的影响。那么此处就相当于假定年龄不变,然后测量握力与年龄的关系,这种问题就称作多重共线性( multicollinearity)。它会导致模型参数的置信区间过大,使单个系数解释起来很困难。
    多重共线性可用统计量VIF( Variance Inflation Factor, 方差膨胀因子)进行检测。 VIF的平方根表示变量回归参数的置信区间能膨胀为与模型无关的预测变量的程度(因此而得名)。car包中的vif()函数提供VIF值。一般原则下, vif >2就表明存在多重共线性问题。


    VIF
    5.7 异常观测值

    离群点 杠杆点 强影响点。
    具体参考《R语言实战》p182-186

    5.8 过度离势

    6改进措施

    有四种方法可以处理违背回归假设的问题:
    删除观测点;
    变量变换;
    添加或删除变量;
    使用其他回归方法。

    7.选择最佳的回归模型

    7.1模型比较

    anova()函数:
    用基础安装中的anova()函数可以比较两个嵌套模型的拟合优度。所谓嵌套模型,即它的一些项完全包含在另一个模型中。在states的多元回归模型中,我们发现Income和Frost的回归系数不显著,此时你可以检验不含这两个变量的模型与包含这两项的模型预测效果是否一样好。
    AIC比较模型:
    AIC值越小,模型越佳。
    与anova相比,AIC不需要嵌套模型。

    7.2 变量选择

    逐步回归法( stepwisemethod)和全子集回归( all-subsets regression),后者优于前者。P191

    8.回归模型的深层次分析

    8.1交叉验证

    对新数据集的预测能力。p194
    方法:R平方的k重交叉验证。

    8.2相对重要性

    根据相对重要性对预测变量进行排序。
    方法:相对权重法。

    相关文章

      网友评论

          本文标题:从回归到临床模型(一)

          本文链接:https://www.haomeiwen.com/subject/smcblhtx.html