# 数据预处理
data(Affairs,package="AER")
a <- Affairs
a$ynaffair[a$affairs > 0] <- 1
a$ynaffair[a$affairs == 0] <- 0
a$ynaffair <- factor(a$ynaffair, levels=c(0,1),labels=c("No","Yes"))
table(a$ynaffair) # 检验是否平衡
# 将全部预测变量加入logistic回归模型
# fit.full <- glm(ynaffair ~ ., data=a, family=binomial());fit.full;
fit.full <- glm(ynaffair ~ gender + age + yearsmarried + children +
religiousness + education + occupation + rating,
data = a, family=binomial())
# 属性选择的两种方法
# 1、逐步回归方法,选择AIC最小的自变量(最后一个formula)
step.test <- step(fit.full)
glm.step.test <- glm(ynaffair ~ gender + age + yearsmarried + religiousness + rating, data = a, family="binomial");
summary(glm.step.test) # 结果可见 gender性别不够显著(没关系,之后用ROC曲线以及AUC值与去掉gender进行比较)
# 2、直接summary(fit.full)对所有自变量拟合,查看各自变量的显著性p值进行筛选,此处去掉gender
summary(fit.full)
fit.reduced <- glm(ynaffair ~ age + yearsmarried + religiousness + rating,
family=binomial(), data=a);
summary(fit.reduced) # 各自变量依然显著[坚挺]
# 通过方差的卡方独立性检验比较是否加入gender属性,模型的结果是否具有显著性差异
# p=0.06,应该无法拒绝原假设,没有充分的证据证明加入gender与否会对模型结果造成显著性差异.(暂且接受无差异的假设)
anova(fit.reduced, glm.step.test, test="Chisq")
# 3、ROCR[逐步回归与全部自变量加入通过显著性判断两种途径进行特征选择的ROC与AUC的比较]
# 拟合后的两个glm-lm对象 1: glm.step.test 2: fit.reduced
# response ROC curve:glm.step.test
library(ROCR)
par(mfrow=c(2,1))
# glm.step.test
pre.step <- predict(glm.step.test, type="response")
step.m <- prediction(pre.step, a$ynaffair)
plot(performance(step.m, 'tpr', 'fpr'))
abline(0,1, lty=8, col="red")
auc <- performance(step.m, "auc"); auc@y.values # 0.7067406
# fit.reduced
pre.fit.reduced <- predict(fit.reduced, type="response")
reduced.m <- prediction(pre.fit.reduced, a$ynaffair)
plot(performance(reduced.m, 'tpr', 'fpr'))
abline(0,1, lty=10, col="green")
auc <- performance(reduced.m, "auc"); auc@y.values # 0.7038877
# 使用逐步回归的auc较好,但是不明显,此处仅仅是技巧的考虑。即使用逐步回归和显著性检验基本没有太大差异。
# step(object, scope, scale = 0,direction = c("both", "backward", "forward"), trace = 1, keep = NULL, steps = 1000, k = 2, ...)
# 4.进一步延伸,ROC包的增强版pROC
# 此处仅以逐步回归的结果作为演示
library(pROC)
modelroc <- roc(a$ynaffair, pre.step)
plot(modelroc, print.auc=TRUE, auc.polygon=TRUE, grid=c(0.1, 0.2),
grid.col=c("green", "red"), max.auc.polygon=TRUE,
auc.polygon.col="skyblue", print.thres=TRUE)
# 5、logistic模型适用条件(假设)
# 期望方差:(抽样于二项分布数据的期望方差=np(1-p),n为观测值,p为因变量=1的概率)
# 过度离势:观测到的因变量的方差大于期望的二项分布的方差导致奇异的标准误和不精确的显著性检验
# 如果离势 = 残差偏差/残差自由度 >>1,则存在过度离势,否则没有
# 如何处理? 适用类二项分布
# 先检验一下是否存在过度离势的情况。拟合两个模型,以逐步回归为例
# 最初的 binomial
glm.step.test <- glm(ynaffair ~ gender + age + yearsmarried + religiousness + rating, data = a, family="binomial");
# 后来的类二项分布 quasibinomial
fit.step.quasi <- glm(ynaffair ~ gender + age + yearsmarried + religiousness + rating, data = a, family="quasibinomial")
# 检验输出的p值大于0.05,没有出现过度离势的情况。原假设为:离势比值=1;H1:离势!=1
pchisq(summary(fit.step.quasi)$dispersion*glm.step.test$df.residual, fit.step.quasi$df.residual, lower=F)
# 如果出现离势的处理方式,采用fit.step.quasi的拟合过程即可
summary(fit.step.quasi)$dispersion
相关推荐
10. **软件实现**:许多统计和数据分析软件支持Logistic回归模型的建立和分析,如R语言的`glm()`函数,Python的`sklearn`库中的`LogisticRegression`类。 综上所述,Logistic回归模型是一种强大且实用的工具,它...
Logistic回归和朴素贝叶斯是两种在机器学习领域中广泛应用的分类算法,它们各有特点,且在实际问题中有着广泛的应用场景。 首先,我们来深入理解Logistic回归。Logistic回归并非真正的“回归”算法,而是一种二分类...
2. **R语言实现**:在R中,可以使用`glm()`函数实现Logistic回归。例如: ```r library(MASS) data(iris) # 定义因变量和自变量 y <- as.factor(iris$Species) X <- iris[, -5] # 训练模型 fit <- glm(y ~ ., ...
这篇论文探讨了使用Logistic回归和人工神经网络在预测重度颅脑损伤(TBI)患者继发认知功能障碍(CI)的应用。Logistic回归和人工神经网络是两种常见的数据建模和机器学习方法,它们在医学预测领域有着广泛的应用。 ...
在本R语言实例中,我们将基于著名的Boston数据集进行一系列数据分析和建模任务,主要涉及逻辑回归、线性判别分析(LDA)以及K近邻(KNN)方法。Boston数据集包含了506个样本,每个样本代表波士顿郊区的一个区域,...
在编程实现方面,Logistic回归模型可以使用各种统计软件包,如R语言的`glm`函数、Python的`statsmodels`或`scikit-learn`库等来进行建模与分析。 最后,值得注意的是,虽然Logistic回归模型在预测上很有用,但它...
在R语言中,可以使用`brm`函数(来自`brms`包)进行贝叶斯Logistic回归。`nes_logistic.R`文件很可能包含了使用R代码构建这种模型的过程,包括数据导入、模型定义、拟合和结果提取等步骤。例如: ```r # 加载必要的...
每个客户信息中有23个自变量,根据其各个因素的相关性进行了调整然后使用了5挖掘方法,包括KNN,分类树,随机森林,Logistic回归,神经网络进行建模,比较这5种方法中违约概率的预测准确性。其中神经网络的预测效果...
临床预测模型 基于Logistic回归的临床预测模型全流程R语言代码。 包含以下特色: [1]自动提取单因素有意义(默认p)的变量带入到多因素回归。 [2]自动提取多因素有意义的变量再次建立最终模型。 [3]自动使用最终模型...
spss数据分析常用数据集:logistic.sav 统计分析及模型构建中常用的数据集; 学习软件的时候,会苦于没有数据进行实操,而其实一般分析软件都会自带数据,现在介绍如何获取SPSS软件自带的数据。 纽约时报的一篇文章...
基于Vector-free L-BFGS on Spark的逻辑回归可以处理大规模数据集,并且可以与其他机器学习算法集成。 CTR Pipeline CTR Pipeline是大规模机器学习的常见应用之一。CTR Pipeline可以用于CTR预测,例如广告点击率...
本次分享的内容主要围绕L12语言模型进行了详细的介绍和讨论,涵盖了概率检索模型、Logistic回归IR模型、统计语言模型、基于统计语言建模的IR模型等多个方面的知识点。 概率检索模型是通过概率的方法将查询和文档...
本文将深入探讨如何使用R语言手写实现逻辑回归模型,并对其优化过程进行详细阐述。 逻辑回归的核心是构建一个概率模型,通过线性函数对因变量进行变换,得到一个介于0和1之间的概率估计。模型的形式通常表示为: \...
在本资源包中,“多元统计分析—基于R-code”和“多元统计分析—基于R-data.rar”是针对这个主题提供的配套教学资源,特别强调了使用R语言进行实际操作和数据分析。 R语言是一种广泛应用于统计计算和图形绘制的开源...
同样也是上学时候做的一个小实验,现在看看写的挺渣的,不过算是很用心了,思路还算完整
【中科大第四届统计建模程序】是一套针对统计建模的软件工具,主要涉及Logistic回归分析和变量聚类分析两个重要领域。Logistic回归是一种广泛应用的统计模型,用于研究因变量为二分类或多分类离散变量时自变量与因...
在给定的描述中,"基于线性回归的利润预测案例"可能涉及使用历史销售数据和其他相关因素来预测未来的利润,这对于商业决策至关重要。局部加权回归(Local Weighted Regression)是一种非参数方法,它根据数据点附近...
该网络估计程序eLasso基于Ising模型,将l1正则逻辑回归与基于扩展贝叶斯信息准则(EBIC)的模型选择相结合。 EBIC是一种适合的度量,用于识别变量之间的相关关系。 生成的网络由变量(作为节点)和相关关系(作为边...
"glmnet_matlab"很可能是基于R语言的glmnet包的一个MATLAB版本,glmnet是广义线性模型(包括逻辑回归)的正则化路径算法。它支持L1和L2范数正则化,也称为套索回归(Lasso)和弹性网(Elastic Net)回归。在MATLAB...