R语言 请问我这个数据可以选择哪些变量做多元回归分析模型啊?

  • 介绍数据集和研究的目标

    • 使用5折交叉验证对模型实例进行评估

  • 使用可视化进行最终的模型探索

本报告是对心脏研究的机器学习/数据科学调查分析。更具体地说,我们的目标是在心脏研究的数据集上建立一些预测模型,并建立探索性和建模方法。但什么是心脏研究?

我们阅读了关于FHS的资料:

心脏研究是对社区自由生活的人群中心血管疾病病因的长期前瞻性研究。心脏研究是流行病学的一个里程碑式的研究,因为它是第一个关于心血管疾病的前瞻性研究,并确定了风险因素的概念。

该数据集是FHS数据集的一个相当小的子集,有4240个观测值和16个变量。这些变量如下:

  1. 观测值的性别。该变量在数据集中是一个名为 "男性 "的二值。

  2. 年龄:体检时的年龄,单位为岁。

  3. 教育 : 参与者教育程度的分类变量,有不同的级别。一些高中(1),高中/GED(2),一些大学/职业学校(3),大学(4)

  4. 检查时使用抗高血压药物的情况

  5. 流行性中风。流行性中风(0 = 无病)。

  6. 流行性高血压(prevalentHyp)。流行性高血压。如果接受治疗,受试者被定义为高血压

  7. 糖尿病。根据第一次检查的标准治疗的糖尿病患者

  8. BMI: 身体质量指数,体重(公斤)/身高(米)^2

  9. 葡萄糖。血糖水平(mg/dL)

最后是因变量:冠心病(CHD)的10年风险。

这4240条记录中有3658条是完整的病例,其余的有一些缺失值。

在每一步之前,要加载所需的库。

然后,加载心脏研究的数据集。

我们对数据集进行一次检查。

生成一个数据集的所有单变量图。

这是为了获得对变量,对整个问题和数据集的理解,将通过多变量或至少双变量的可视化来实现。

现在我们可以进行一些双变量的可视化,特别是为了看到因变量(TenYearCHD)和预测因素之间的关系。由于图的数量太多,不是所有的一对变量都能被调查到!我们可以在后面的步骤中继续调查。我们可以稍后再回到这一步,深入了解。

下面的代码可以生成因变量的所有双变量图。由于因变量是一个二元变量,所以当预测变量是定量的时候,我们会有boxplots,或者当预测变量是定性的时候,我们会有分段的bar图。

根据我们掌握的情况,男性与TenYearCHD直接相关,因此男性这个变量似乎是一个相对较好的预测因素。同样,年龄似乎也是一个很好的预测因素,因为TenYearCHD == TRUE的病人有较高的年龄中位数,其分布几乎相似。相反,不同类别的教育和因变量之间似乎没有关系。目前的吸烟者变量与因变量有轻微的关系,因为目前的吸烟者患TenYearCHD的风险略高。

然而,除了这些本质上是定性方法的图表外,人们可能希望对这种关联有一个数字值。为了有这样的数字测量,我想使用Goodman&Kruskal的tau测量,这是两个无序因子,即两个分类/名义变量之间的关联测量。在我们这个数据集中的因子变量中,只有教育是序数变量,即它的类别有意义。这种测量方法比Cramer's V或chi-Square测量方法更具信息量。

可以看出,关于因变量的变异性,预测因素的解释力非常小。换句话说,根据Goodman和Kruskal's tau度量,我们的预测因素和因变量之间几乎没有关联。这可以从TenYearCHD一栏的数值中看出。

假设我的G&Ktau检验正确的话,这对模型来说并不是一个好消息。

为了检验这些发现,我们可以用Chi-Square检验来检验分类变量与因变量的关联的显著性,然后用Phi相关系数来评估可能的关联的强度。Phi用于2x2等值表。对于更大的表格,即有更多层次的变量,可以利用Cramer's V。

奇怪的是,当Chi-Square的P值如此之低时,可能的关联的显著性为零。这两个测试(Chi-Square和Phi相关)在大量的观察中基本上得出相同的结果,因为一个是基于正态分布的,另一个是基于t分布的。

该模型的真正问题在于共线性现象。共线性关系发生在两个预测因子高度相关的情况下。我们需要检查这种特性,然后继续建立对数回归模型。

根据Goodman和Kruskal's tau图,我们不应该担心共线性。但是,有序变量的教育变量呢?Cramer's V检验显示,其强度不大。

没有一个变量显示与教育有很强的关联。Cramer's V的最高值是0.145,这在教育和性别之间是相当弱的。

但是诸如currentSmoker和cigsPerDay这样的变量呢?很明显,其中一个是可以预测的。有一个数字变量和一个分类变量,我们可以把数字变量分成几个类别,然后使用Goodman和Kruskal's tau。GroupNumeric()函数可以帮助将定量变量转换成定性变量,然而,基于对数据的主观理解,以及之前看到的cigsPerDay的多模态分布,在这里使用cut()函数很容易。
现在让我们检查一下GKtau的数值

从矩阵图上的tau值及其背景形状,我们可以看到cigsPerDay可以完全解释currentSmoker的变异性。这并不奇怪,因为如果我们知道一个人每天抽多少支烟就可以断言我们知道一个人是否是吸烟者!

第二个关联是cigsPerDay与男性的关系,但它并不强烈。因此,前者可以解释后者的较小的变化性。

在下一个数据集中,我把所有定量变量转换成定性/分类变量。现在我们可以有一个全面的矩阵,尽管由于转换,一些信息会丢失。

现在是评估模型实例的时候了。在这里,我们把逻辑回归称为模型。

2. 一个包括所有原始变量的模型实例,除了currentSmoker,cigsPerday被转换为一个因子变量
为了评估模型实例,我们可以使用数学调整训练误差率的方法,如AIC。另一种方法是使用验证数据集,根据模型在这个数据集上的表现来评估模型。在后一种方法中,我选择使用K-fold Cross-Validation(CV)技术,更具体地说是5-fold CV。在这里,还有其他一些技术,如留一法交叉验证。

这个模型是基于原始数据集的。有缺失值的记录被从数据集中省略,模型显示变量男性、年龄、cigsPerDay、totChol、sysBP和葡萄糖是显著的,而prevalentHyp在某种程度上是显著的。

在第二个模型实例中,重要变量与前一个模型实例相同。

一个非常重要的问题是,如何衡量这两个模型实例的性能以及如何比较它们?有各种方法来衡量性能,但我在这里选择了5折交叉验证法。

为了进行交叉验证和评估模型实例,我们需要一个成本函数。boot软件包推荐的一个函数,是一个简单的函数,它可以根据一个阈值返回错误分类的平均数。阈值默认设置为0.5,这意味着任何观察到的超过50%的CHD机会都被标记为有持续疾病的TRUE病例。从医学的角度来看,我把阈值降低到0.4,这样即使是有40%机会得心脏病的病例,也会被标记为接受进一步的医疗关注。降低阈值,增加了假阳性率,从而增加了医疗费用,但减少了假阴性率,挽救了生命。我们可以使用敏感度或特异性作为成本函数。此外,也可以使用cvAUC软件包将曲线下面积(AUC)与CV结合起来。

我们可以看到,两个模型非常相似,然而,模型2显示出轻微的优势。准确率确实相当高。但是,让我们看看我们是否可以通过删除一些变量来改进model1。

我们看一下model1的总结。

到现在为止,我们一直假设所有的变量都必须包含在模型中,除非是共线性的情况。现在,我们被允许通过删除不重要的变量。这里有几种方法,如前向选择和后向选择。

例如,后向选择法是基于不显著变量的P值。淘汰继续进行,直到AIC显示没有进一步改善。还有stats::step()和bestglm::bestglm()函数来自动进行变量选择过程。后者的软件包及其主要函数有许多选择信息标准的选项,如AIC、BIC、LOOCV和CV,而前者的逐步算法是基于AIC的。

现在让我们来看看这两个模型和它们的交叉验证误差。

基于BIC的bestglm::bestglm()将模型变量减少到5个:男性、年龄、cigsPerDay、sysBP和葡萄糖。所有的变量都是非常显著的,正如预期的那样。

AIC方法和BIC方法都能产生相同的准确性。该选择哪种方法呢?我宁愿选择AIC,因为该模型实例有更多的预测因素,因此更有洞察力。然而,选择BIC模型实例也是合理的,因为它更简明。与model1的准确度相比,我们通过变量选择在准确度上有0.=0.-0.842=0.0055的提高。然而,我们失去了关于其他预测因子和因变量关系的信息。

到目前为止,我只做了逻辑回归模型。有更多的模型可以用来为当前的问题建模,而RandomForest是一个受欢迎的模型。让我们试一试,并将结果与之前的模型进行比较。

在这里,我同时使用了CV和out-of-bag(OOB)来评估随机森林性能。

我们可以看到,在50到1000棵树的范围内,RandomForest模型的最高精度可以通过设置CV方法的树数等于400来获得。图中的红线显示了我们从逻辑回归模型实例中得到的最佳CV精度。由于OOB的最高准确率高于CV的最高准确率,所以我选择了CV的准确率,使其更加谨慎。ntree=400的CVaccuracy=0.8486CVaccuracy=0.8486,比最好的逻辑回归模型差0.! 然而,如果我们考虑OOB的准确性,那么RandomForest模型比最佳逻辑回归模型好0.。

在RF中,模型的准确性有所提高,但代价是失去了可解释性。RF是一个黑箱,我们无法解释预测因子和因变量之间的关系。

这里为了完成这个报告,我想在一个新的数据集上增加一个预测部分。该数据集只有一条记录,其中包括我自己的个人数据。换句话说,我已经创建了一个模型,我想知道它是否预测了我的CHD。

逻辑回归模型的预测输出。

因此,现在看来,我没有风险! 然而,正如我之前提到的,这些模型是为了教育和机器学习的实践,而不是为了医学预测!所以,我认为这些模型是有价值的。

让我们最后看一下这个模型

结果大多符合预期。根据GKtau值,预测因子之间的关联最小。这正是我们想要的,以避免共线性现象。
然而,平行坐标仍然显示了一些有趣的点。例如,年龄组与 "十年健康发展 "结果之间的关联很有意思。较低的年龄组在TenYearCHD==TRUE中的参与度很低,这意味着年龄与该疾病有正相关。另一方面,与男性相比,女性(男性==FALSE)在0支烟和[1,20]支烟组的贡献更大。换句话说,男性倾向于抽更多的烟,而且是重度吸烟者。

桑吉图可以产生更好的洞察力,因为我们可以沿着坐标轴观察样本。

在这项研究中,为了建立预测模型,使用了包括4240个观测值和16个变量的心脏研究的数据集。这些模型旨在预测十年后的冠心病(CHD)。
在对数据集进行探索后,利用逻辑回归和随机森林模型来建立模型。使用K-Fold Cross-Validation对模型进行了评估。

为了扩展这项研究,可以使用进一步的分类方法,如支持向量机(SVM)、梯度提升(GB)、神经网络模型、K-近邻算法,甚至决策树。

1.从决策树模型看员工为什么离职

2.R语言基于树的方法:决策树,随机森林

4.机器学习:在SAS中运行随机森林数据分析报告

5.R语言用随机森林和文本挖掘提高航空公司客户满意度

6.机器学习助推快时尚精准销售时间序列

7.用机器学习识别不断变化的股市状况——隐马尔可夫模型的应用

8.python机器学习:推荐系统实现(以矩阵分解来协同过滤)

9.python中用pytorch机器学习分类预测银行客户流失

等等,在时间复杂度测试性能上,KNN不是最优,但实现是最简单。 视频中还谈到了关于训练算法与测试样本依赖性,即如果当前超参数与当前测试样本测试结果非常好,这就表明超参数(距离公式K值)以及训练算法过于依赖测试样本,将不再具有代表性(只为这个测试样本模型),感觉像在说个驳论- - 模型评估 这个其实之前有学习过,在西瓜书里。 模型评估与选择 留出法 就像上图说所,方法3,将数据通过训练

1.参数:描述总体特征的概括性数字度量,是研究者想要了解的总体的某种特征值。所关心的参数主要有总体均值、标准差、总体比例等。总体参数通常用希腊字母表示

2.残差:因变量的观测值与根据估计的回归方程求出的预测值之差,用e表示。反映了用估计的回归方程去预测而引起的误差,可用于确定有关误差项ε的假定是否成立

3.标准分数:变量值与其平均数离差除以标准差后的值就是标准分数也称标准化值或z分数。P87

4.次序统计量:一组样本观测值X1,X2,…,X n由小到大的排序X(1)≤X(2)≤…≤ X (i)

≤…≤ X(n)后,称X(1),X(2),…,X(n)为次序统计量。中位数、分位数、四分位数等都是次序统计量

5.β错误:原假设为伪是没有拒绝,犯这种错误的概率用表示,所以也称β错误或取伪错误

6.α错误:原假设为真时拒绝原假设,犯这种错误的概率用α表示,所以也被称

7.多元回归方程:描述因变量y 的平均值或期望值如何依赖于自变量x1,

,…,x k的方程。多元线性回归方程的形式为

8.多元回归模型:描述因变量y 如何依赖于自变量x1, x2,…, x k和误差项ε的方程,称为多元回归模型。其一般形式为:

9.多重判定系数:是多元回归中的回归平方和占总平方和的比例,它是度量多元回归方程拟合程度的一个统计量,反映了在因变量y的变差中被估计的回归方程所解释的比例。

10.F分布:设随机变量Y与Z相互独立,且Y与Z分别服从于自由度为m和n

χ分布,随机变量X有如下表达式:F=nY/mZ,则称X服从于第一自由度为

m,第二自由度为n的F分布,记作X~F(m,n)

11.方差分析:检验各个总体均值是否相等来判断分类型自变量对数值型因变量是否有显著影响。

χ分布:设随机变量X1,X2,…,Xn相互独立,且Xi(i=1,2,…,n)服从标准正态分布N(0,1)则他们的平方和服从自由度为n的2

我要回帖

更多关于 变量选择的方法 的文章

 

随机推荐