R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据

您所在的位置:网站首页 R语言中cat函数 R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据

R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据

2023-03-11 03:59| 来源: 网络整理| 查看: 265

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