如何用R语言做逻辑回归模型
关键词: r语言 逻辑回归、r语言 逻辑回归预测、逻辑回归模型
如何在R语言环境下进行回归模型预测。以下的案例来自美国社会调查机构:为了研究谋杀率与哪些因素有关,收集美国50个地区的谋杀率、收入水平、文盲率、生活经验、霜冻天数的数据,如下图:
1.分析不同地区的谋杀率分布特征。
从面的核密度图可见,谋杀率呈现正态分布的特征,输入代码:
par(mfrow=c(2,1))
d<-density(sj$谋杀率)
plot(d)
2.分析不同变量的拟合性情况
这里主要调用car包,通过使用scatterplotMatrix() 函数,分析不同变量的相关关系及对因变量的拟合情况,输入如下代码:
library(car)
scatterplotMatrix(sj[,2:6])
上面的拟合组合图可见,谋杀率与收入水平、生活经验以及霜冻天数呈现出负相关关系,而和文盲率呈现出正相关关系,这个比较好理解。
3.进一步检验各个变量之间的相关性
这里主要是使用psych包,通过corr.test()函数,计算各个变量之间的相关性及其显著性,在R环境中输入如下代码:
library(psych)
corr.test(sj[,2:6])
上图第一部分,显示的是各个变量之间的相关性,第二部分显示的是各个相关性的显著性检验P值。从第一部分可见,谋杀率与文盲率、生活经验、霜冻天数分别具有0.7、-0.78以及-0.54的相关性,并且显著性水平P值均小于0.05,而谋杀率与收入水平的相关性不具有显著性,所以不列入模型。
4.尝试建立多元一项式回归模型
根据前面的分析结果,将文盲率、生活经验和霜冻天数列入模型,首先建立多元一项式模型,输入如下代码:
谋杀率<-lm(谋杀率~文盲率+生活经验+霜冻天数,data=sj)
summary(谋杀率)
从上图可见,残差的最大值3.95,最小值-3.969,中值0.184,残差具有正态分布的特征!第二部分显示的是各变量的系数及其显著性系数,唯有文盲率p>0.05,其它两个变量的系数都具有显著性;从第三部分可见,R=0.7217,表明72.17%的情况可以用该模型进行预测;且模型的方差检验的显著性P<0.05.
5.模型的回归诊断
从下面的回归诊断图可见,残差并不随拟合值的变化而变化,而是呈现出一定的水平分别特征,第二幅QQ图正好印证了残差正态分布的特征;而从第三、四 幅图也可见,拟合值的标准差具有同一性。
由于篇幅有限,各位读者除了按照上面的方式建模,还需要考虑以上3个自变量的交互效应对模型的影响,从中观察R方的变化。
6.检验拟合值的同方差性
从上面可以发现,拟合值具有同方差的特征,为了进一步检验,这里采用ncvTest()函数,对模型进行检验,输入如下代码:
par(mfrow=c(2,2))
ncvTest(谋杀率)上图可见,P值>0.05,拟合值具有同方差性,而通过分布水平图,进一步可见其中的点在最佳拟合曲线周围呈现水平分布的特征。综上所述:模型的显著性符合p<0.05,R方=72.17% ,并且残差呈现正态分布,拟合值具有同方差性的特征,模型的拟合效果整体看不错,可以达到实用的水平!
转载请注明:数据分析 » 如何用R语言做逻辑回归模型_R语言逻辑回归