R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据 |
您所在的位置:网站首页 › R语言中cat函数 › R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据 |
kable(head(dataset)) str(dataset) ##检查变量的摘要 summary(dataset) 2.2 数据集的单变量图 生成一个数据集的所有单变量图。 # 需要删除字符、时间和日期等变量 geom_bar(data = dataset, theme_linedraw()+ #colnames(dataset) marrangeGrob(grobs=all_plots, nrow=2, ncol=2) 这是为了获得对变量,对整个问题和数据集的理解,将通过多变量或至少双变量的可视化来实现。 点击标题查阅往期内容 数据分享|R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病 左右滑动查看更多 01 02 03 04 2.3 数据集的双变量图:因变量和预测因素之间的关系 现在我们可以进行一些双变量的可视化,特别是为了看到因变量(TenYearCHD)和预测因素之间的关系。由于图的数量太多,不是所有的一对变量都能被调查到!我们可以在后面的步骤中继续调查。我们可以稍后再回到这一步,深入了解。 下面的代码可以生成因变量的所有双变量图。由于因变量是一个二元变量,所以当预测变量是定量的时候,我们会有boxplots,或者当预测变量是定性的时候,我们会有分段的bar图。 for (var in colnames(dataset) ){ if (class(dataset[,var]) %in% c("factor","logical") ) { ggplot(data = dataset) + geom_bar( aes_string(x = var, } else if (class(dataset[,var]) %in% c("numeric","double","integer") ) { ggplot(data = dataset) + geom_boxplot() 根据我们掌握的情况,男性与TenYearCHD直接相关,因此男性这个变量似乎是一个相对较好的预测因素。同样,年龄似乎也是一个很好的预测因素,因为TenYearCHD == TRUE的病人有较高的年龄中位数,其分布几乎相似。相反,不同类别的教育和因变量之间似乎没有关系。目前的吸烟者变量与因变量有轻微的关系,因为目前的吸烟者患TenYearCHD的风险略高。 2.4 使用Goodman&Kruskal tau检验定性变量之间的关系 然而,除了这些本质上是定性方法的图表外,人们可能希望对这种关联有一个数字值。为了有这样的数字测量,我想使用Goodman&Kruskal的tau测量,这是两个无序因子,即两个分类/名义变量之间的关联测量。在我们这个数据集中的因子变量中,只有教育是_序数变量_,即它的类别有意义。这种测量方法比Cramer's V或chi-square测量方法更具信息量。 GKtauData(cat_variables) plot(dataset) 可以看出,关于因变量的变异性,预测因素的解释力非常小。换句话说,根据Goodman和Kruskal's tau度量,我们的预测因素和因变量之间几乎没有关联。这可以从TenYearCHD一栏的数值中看出。 假设我的G&Ktau检验正确的话,这对模型来说并不是一个好消息。 为了检验这些发现,我们可以用Chi-square检验来检验分类变量与因变量的关联的显著性,然后用Phi相关系数来评估可能的关联的强度。Phi用于2x2等值表。对于更大的表格,即有更多层次的变量,可以利用Cramer's V。 chisq.test(table(dataset_cat$p.value )) phi(matrix(table(dataset_cat_variables[,7], 奇怪的是,当Chi-square的P值如此之低时,可能的关联的显著性为零。这两个测试(Chi-square和Phi相关)在大量的观察中基本上得出相同的结果,因为一个是基于正态分布的,另一个是基于t分布的。 2.5 多重共线性的双变量分析 该模型的真正问题在于共线性现象。共线性关系发生在两个预测因子高度相关的情况下。我们需要检查这种特性,然后继续建立对数回归模型。 根据Goodman和Kruskal's tau图,我们不应该担心共线性。但是,有序变量的教育变量呢?Cramer's V检验显示,其强度不大。 # 教育与其他分类变量的Chi square独立性测试 chisq.test(table(education,variables[,x]))$p.value ) #将教育变量重新定位到数据集的第一个变量上 assocstats(x = table(dataset_cat_variables[,1], dataset_$cramer ) ) 没有一个变量显示与教育有很强的关联。Cramer's V的最高值是0.145,这在教育和性别之间是相当弱的。 但是诸如currentSmoker和cigsPerDay这样的变量呢?很明显,其中一个是可以预测的。有一个数字变量和一个分类变量,我们可以把数字变量分成几个类别,然后使用Goodman和Kruskal's tau。GroupNumeric()函数可以帮助将定量变量转换成定性变量,然而,基于对数据的主观理解,以及之前看到的cigsPerDay的多模态分布,在这里使用cut()函数很容易。 现在让我们检查一下GKtau的数值 class_list |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |