原文链接:http://tecdat.cn/?p=9195
最近咱们被客户要求撰写对于逻辑回归的钻研报告,包含一些图形和统计输入。
行为危险因素监视系统(BRFSS)是美国的年度电话考察。BRFSS旨在辨认成年人口中的危险因素并报告新兴趋势
加载包
library(ggplot2)
载入材料
load("brfss2013.RData")
第1局部:对于数据
例如,询问受访者饮食和每周的体育锻炼,艾滋病毒/艾滋病情况,可能的烟草应用,免疫接种,健康状况,衰弱天数-与衰弱相干的生存品质,取得医疗保健,睡眠不足,高血压意识,胆固醇意识,慢性健康状况,饮酒,水果和蔬菜生产,关节炎累赘和安全带应用。
数据采集:
数据收集过程在brfss_codebook中进行了阐明。通过进行座机电话考察和基于蜂窝电话的考察,从美国所有50个州,哥伦比亚特区,波多黎各,关岛和美属萨摩亚,密克罗尼西亚联邦和帕劳收集了数据。固定电话样本已应用了不成比例的分层抽样(DSS),并且随机抉择了蜂窝电话受访者,每个受访者具备雷同的抉择概率。咱们正在解决的数据集蕴含330个变量,2013年共进行491、775次观测。缺失值用“ NA”示意。
推广性:
样本数据应使咱们可能推广到感兴趣的人群。它是对491,775名18岁以上美国成年人的考察。它基于大量分层的随机样本。潜在偏见与无回应,不残缺的访谈,价值观缺失和便当偏见无关。
因果关系:
BRFSS是一项察看钻研,只能建设变量之间的相关性/关联性,因而无奈建设因果关系。
第2局部:钻研问题
钻研问题1:
在过来30天内,身心健康状况不佳的天数散布是否因性别而异?
钻研问题2:
受访者承受采访的月份与受访者自我报告的衰弱感知之间是否存在关联?
钻研问题3:
支出和医疗保险之间有关联吗?
钻研问题4:
吸烟,饮酒,胆固醇,血压,体重和中风之间是否有任何关系?最终,我想看看是否能够通过上述变量预测中风。
第3局部:探索性数据分析
钻研问题1:
ggplot(aes(x=physhlth, fill=sex), data = brfss2013[ ! is.na(brfss2013 $ sex), ]) + geom_histogram(bins=30, position = position_dodge()) + ggtitle('Number of Days Physical Health not Good in the Past 30 Days')
点击题目查阅往期内容
R语言逻辑回归(Logistic Regression)、回归决策树、随机森林信用卡守约剖析信贷数据集
左右滑动查看更多
01
02
03
04
ggplot(aes(x=menthlth, fill=sex), data=brfss2013[ ! is.na(brfss2013 $ sex), ]) + geom_histogram(bins=30, position = position_dodge()) + ggtitle('Number of Days Mental Health not Good in the Past 30 Days')
ggplot(aes(x=poorhlth, fill=sex), data=brfss2013[ ! is.na(brfss2013 $ sex), ]) + geom_histogram(bins=30, position = position_dodge()) + ggtitle('Number of Days with Poor Physical Or Mental Health in the Past 30 Days')
summary(brfss2013 $ sex)
## Male Female NA's ##201313 290455 7
以上三个数字显示了过来30天内男性和女性对身材,精力和衰弱状况不佳的天数做出反馈的数据分布。咱们能够看到,女性受访者比男性受访者要多得多。
钻研问题2:
我试图找出人们在不同月份对健康状况的反馈是否不同。例如,人们是否更有可能说本人在秋季或冬季身体健康?
钻研问题3:
一般而言,高支出受访者比低收入受访者更有可能取得医疗保健。
钻研问题4:
为了答复这个问题,我将应用以下变量:
- smoke100:抽至多100支香烟
- avedrnk2:过来30天每天均匀含酒精饮料
- bphigh4:已经血压过高
- tellhi2:高胆固醇血症
- weight2:报告的磅数
- cvdstrk3:已经被诊断为中风
首先,将上述变量转换为数字,并查看这些数字变量之间的相关性。
corr.matrix <- cor(selected_brfss)corrplot(corr.matrix, main="\n\nCorrelation Plot of Smoke, Alcohol, Blood pressure, Cholesterol, and Weight", method="number")
仿佛没有任何两个数字变量具备很强的相关性。
Logistic回归预测中风
将答案“是,但女性仅在怀孕期间告知”和“通知临界点或高血压前”答复为“是”。
将“ NA”值替换为“否”。
stroke $ bphigh4 <- replace(stroke $ bphigh4, which(is.na(stroke $ bphigh4)), "No")stroke $ toldhi2 <- replace(stroke $ toldhi2, which(is.na(stroke $ toldhi2)), "No")stroke $ cvdstrk3 <- replace(stroke $ cvdstrk3, which(is.na(stroke $ cvdstrk3)), "No")stroke $ smoke100 <- replace(stroke $ smoke100, which(is.na(stroke $ smoke100)), 'No')
均匀替换“ NA”值。
mean(stroke $ avedrnk2,na.rm = T)
##[1] 2.209905
stroke $ avedrnk2 <- replace(stroke $ avedrnk2, which(is.na(stroke $ avedrnk2)), 2)
看一下将用于建模的数据。
head(stroke)summary(stroke)
## bphigh4 toldhi2 cvdstrk3 weight2 smoke100 avedrnk2##1 Yes Yes No 154 Yes 2##2 No No No 30 No 2##3 No No No 63 Yes 4##4 No Yes No 31 No 2##5 Yes No No 169 Yes 2##6 Yes Yes No 128 No 2
## bphigh4 toldhi2 cvdstrk3 weight2 smoke100 ## No :284107 Yes:183501 Yes: 20391 Min. : 1.00 Yes:215201 ## Yes:207668 No :308274 No :471384 1st Qu.: 43.00 No :276574 ## Median : 73.00 ## Mean : 80.22 ## 3rd Qu.:103.00 ## Max. :570.00 ## avedrnk2 ## Min. : 1.000 ## 1st Qu.: 2.000 ## Median : 2.000 ## Mean : 2.099 ## 3rd Qu.: 2.000 ## Max. :76.000
二进制后果。
在整顿和清理数据之后,当初咱们能够拟合模型。
Logistic回归模型拟合
summary(model)
##Call:##glm(formula = cvdstrk3 ~ ., family = binomial(link = "logit"), ## data = train)##Deviance Residuals: ## Min 1Q Median 3Q Max ##-0.5057 -0.3672 -0.2109 -0.1630 3.2363 ##Coefficients:## Estimate Std. Error z value Pr(>|z|) ##(Intercept) -3.2690106 0.0268240 -121.869 < 2e-16 ***##bphigh4Yes 1.3051850 0.0193447 67.470 < 2e-16 ***##toldhi2No -0.5678048 0.0171500 -33.108 < 2e-16 ***##weight2 -0.0009628 0.0001487 -6.476 9.41e-11 ***##smoke100No -0.3990598 0.0163896 -24.348 < 2e-16 ***##avedrnk2 -0.0274511 0.0065099 -4.217 2.48e-05 ***##---##Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1##(Dispersion parameter for binomial family taken to be 1)## Null deviance: 136364 on 389999 degrees of freedom##Residual deviance: 126648 on 389994 degrees of freedom##AIC: 126660##Number of Fisher Scoring iterations: 6
解释我的逻辑回归模型的后果:
所有变量均具备统计学意义。
- 所有其余变量都相等,被告知血压升高,更可能产生中风。
- 预测变量的负系数-tellhi2No示意,所有其余变量相等,没有被告知血液中胆固醇程度较高,则产生中风的可能性较小。
- 每单位分量扭转,具备冲程(绝对于无冲程)的对数几率升高0.00096。
- 至多抽100支香烟不抽烟,中风的可能性较小。
- 在过来30天内,每天均匀含酒精饮料减少1个单位,中风的对数几率升高0.027。
anova(model, test="Chisq")
##Analysis of Deviance Table##Model: binomial, link: logit##Response: cvdstrk3##Terms added sequentially (first to last)## Df Deviance Resid. Df Resid. Dev Pr(>Chi) ##NULL 389999 136364 ##bphigh4 1 7848.6 389998 128516 < 2.2e-16 ***##toldhi2 1 1230.1 389997 127285 < 2.2e-16 ***##weight2 1 33.2 389996 127252 8.453e-09 ***##smoke100 1 584.5 389995 126668 < 2.2e-16 ***##avedrnk2 1 19.9 389994 126648 7.958e-06 ***##---##Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
剖析偏差表,能够看到一次增加每个变量时偏差的降落。增加bphigh4,tellhi2,smoke100会大大减少残留偏差。只管其余变量weight2和avedrnk2都具备较低的p值,但它们仿佛对模型的改良较少。
评估模型的预测能力``
##[1] "Accuracy 0.961296978629329
测试安装上的0.96精度是十分好的后果。
绘制ROC曲线并计算AUC(曲线下的面积)
auc
##[1] 0.7226642
最初一点,当咱们剖析健康状况监测数据时,咱们必须意识到自我报告的患病率可能会有偏差,因为受访者可能不晓得其危险情况。因而,为了取得更准确的预计,钻研人员正在应用实验室测试以及自我报告的数据。
点击文末 “浏览原文”
获取全文残缺代码数据资料。
本文选自《R语言可视化摸索BRFSS数据并逻辑回归Logistic回归预测中风》。
点击题目查阅往期内容
PYTHON用户散失数据挖掘:建设逻辑回归、XGBOOST、随机森林、决策树、反对向量机、奢侈贝叶斯和KMEANS聚类用户画像
Python对商店数据进行lstm和xgboost销售量工夫序列建模预测剖析
PYTHON集成机器学习:用ADABOOST、决策树、逻辑回归集成模型分类和回归和网格搜寻超参数优化
R语言集成模型:晋升树boosting、随机森林、束缚最小二乘法加权均匀模型交融剖析工夫序列数据
Python对商店数据进行lstm和xgboost销售量工夫序列建模预测剖析
R语言用主成分PCA、 逻辑回归、决策树、随机森林剖析心脏病数据并高维可视化
R语言基于树的办法:决策树,随机森林,Bagging,加强树
R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测
spss modeler用决策树神经网络预测ST的股票
R语言中应用线性模型、回归决策树主动组合特色因子程度
R语言中自编基尼系数的CART回归决策树的实现
R语言用rle,svm和rpart决策树进行工夫序列预测
python在Scikit-learn中用决策树和随机森林预测NBA获胜者
python中应用scikit-learn和pandas决策树进行iris鸢尾花数据分类建模和穿插验证
R语言里的非线性模型:多项式回归、部分样条、平滑样条、 狭义相加模型GAM剖析
R语言用规范最小二乘OLS,狭义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类
R语言ISLR工资数据进行多项式回归和样条回归剖析
R语言中的多项式回归、部分回归、核平滑和平滑样条回归模型
R语言用泊松Poisson回归、GAM样条曲线模型预测骑自行车者的数量
R语言分位数回归、GAM样条曲线、指数平滑和SARIMA对电力负荷工夫序列预测R语言样条曲线、决策树、Adaboost、梯度晋升(GBM)算法进行回归、分类和动静可视化
如何用R语言在机器学习中建设集成模型?
R语言ARMA-EGARCH模型、集成预测算法对SPX理论稳定率进行预测在python 深度学习Keras中计算神经网络集成模型R语言ARIMA集成模型预测工夫序列剖析R语言基于Bagging分类的逻辑回归(Logistic Regression)、决策树、森林剖析心脏病患者
R语言基于树的办法:决策树,随机森林,Bagging,加强树
R语言基于Bootstrap的线性回归预测置信区间预计办法
R语言应用bootstrap和增量法计算狭义线性模型(GLM)预测置信区间
R语言样条曲线、决策树、Adaboost、梯度晋升(GBM)算法进行回归、分类和动静可视化
Python对商店数据进行lstm和xgboost销售量工夫序列建模预测剖析
R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化剖析
R语言用主成分PCA、 逻辑回归、决策树、随机森林剖析心脏病数据并高维可视化
Matlab建设SVM,KNN和奢侈贝叶斯模型分类绘制ROC曲线
matlab应用分位数随机森林(QRF)回归树检测异样值