设为首页 加入收藏

TOP

logistic回归和probit回归预测公司被ST的概率(应用)(一)
2017-10-10 12:09:21 】 浏览:762
Tags:logistic 回归 probit 预测 公司 概率 应用

1.适合阅读人群:

知道以下知识点:盒状图、假设检验、逻辑回归的理论、probit的理论、看过回归分析,了解AIC和BIC判别准则、能自己跑R语言程序

2.本文目的:用R语言演示一个相对完整的逻辑回归和probit回归建模过程,同时让自己复习一遍在学校时学的知识,记载下来,以后经常翻阅。

3.本文不涉及的部分:

(1)逻辑回归和probit回归参数估计的公式推导,在下一篇写;

(2)由ROC曲线带来的阈值选择,在下下一篇写;

(3)本文用的数据取自王汉生老师《应用商务统计分析》第四章里的数据,直接描述性分析和建模,没有涉及到数据预处理。

4.废话少说,上程序:

#适合人群:知道以下知识点:盒状图、假设检验、逻辑回归的理论、probit的理论、看过回归分析,了解AIC和BIC判别准则、能读R语言程序

1.#########读入数据##############
a=read.csv("C:/Users/Thinkpad/Desktop/ST.csv",header=T)   
a1=a[a$year==1999,-1] 						    #训练集	
a2=a[a$year==2000,-1] 						    #测试集		
a1[c(1:5),]	


2.####初步描述性分析######
boxplot(ARA~ST,data=a1,main="ARA")				     #画出各变量与ST的盒状图,初步查看因变量单独和各个解释性变量的关系
par(mfrow=c(3,2))							     #只是初步的描述性分析,没有控制其他因素的影响,没有经过严格的统计检验 
boxplot(ASSET~ST,data=a1,main="ASSET")						 
boxplot(ATO~ST,data=a1,main="ATO")						 
boxplot(GROWTH~ST,data=a1,main="GROWTH")					 
boxplot(LEV~ST,data=a1,main="LEV")						 
boxplot(ROA~ST,data=a1,main="ROA")						 
boxplot(SHARE~ST,data=a1,main="SHARE")						 
par(mfrow=c(1,1))								 

glm0.a=glm(ST~1,family=binomial(link=logit),data=a1)	      ####逻辑回归时:计算模型的整体显著性水平#####			
glm1.a=glm(ST~ARA+ASSET+ATO+GROWTH+LEV+ROA+SHARE,           #结果为7.4e-05,说明模型整体高度显著,也就是说所考虑的7个解释性变量中,至少有一个与因变量有关,具体哪一个不知道
family=binomial(link=logit),data=a1)						
anova(glm0.a,glm1.a)								
1-pchisq(30.565,7)								


glm0.b=glm(ST~1,family=binomial(link=probit),data=a1)		####probit回归时:计算模型的整体显著性水平#####			
glm1.b=glm(ST~ARA+ASSET+ATO+GROWTH+LEV+ROA+SHARE,           #和逻辑回归结果一样,显著
family=binomial(link=probit),data=a1)						
anova(glm0.b,glm1.b)								
1-pchisq(31.702,7)								


									              ####看看是哪个自变量对因变量有影响#####
Anova(glm1.a,type="III")							  #对模型glm1.a做三型方差分析
summary(glm1.a)									
Anova(glm1.b,type="III")							  #对模型glm1.b做三型方差分析
summary(glm1.b)									


3.#######模型选择时要解决的问题:(1)选哪个模型;(2)选哪个阈值。
#######其中选6个中的哪个模型用ROC曲线确定(里面涉及到两个指标:TPR,FPR。至于为什么选择用这两个指标来衡量模型的好坏,请往下看,下面会解释,别着急),选择ROC曲线最上面的那条线所对应的模型。
#######模型确定之后,选取阈值可以根据ROC曲线和实际业务确定。(这里还需要查资料,至于什么ROC曲线,别急,继续向下看)
#######6个模型:逻辑回归的全模型,逻辑回归的AIC模型,逻辑回归的BIC模型,probit回归的全模型,probit回归的AIC模型,probit回归的BIC模型,


                                                            #我们先随便选两个模型感受一个AIC和BIC值
AIC(glm0.a)									#计算逻辑回归方法时,空模型glm0.a的AIC取值
AIC(glm1.a)									#计算逻辑回归方法时,全模型glm1.a的AIC取值
AIC(glm0.a,k=log(length(a1[,1])))					#计算逻辑回归方法时,空模型glm0.a的BIC取值
AIC(glm1.a,k=log(length(a1[,1])))					#计算逻辑回归方法时,全模型glm1.a的BIC取值

 

                                                             #上面只是比较了两个模型的AIC值,BIC值,我们有7个解释变量,一共会有128个不同模型,理论上说需要对这128个模型逐一研究,并选择最有模型,在R中
                                                             #我们可以自动的、尽量多的根据AIC搜索最优模型
logit.aic=step(glm1.a,trace=0)				       #根据AIC准则选择逻辑回归最优模型
summary(logit.aic)

								
n=length(a1[,1])	                                           #根据BIC准则选择逻辑回归最优模型###							
logit.bic=step(glm1.a,k=log(n),trace=0)						
summary(logit.bic)
                                                              #上面AIC和BIC的结果有点差别,可以理解为AIC三个结果都很重要,而其中的ARA极其重要,BIC选择的模型更简单
                                                              #AIC选择的模型的预测精度似乎更好,我们老师当时也说要用AIC准则选模型


probit.aic=step(glm1.b,trace=0)				        #根据AIC准则选择probit回归最优模型,并赋值给probit.aic
summary(probit.aic)								
probit.bic=step(glm1.b,k=log(n),trace=0)				  #根据bIC准则选择probit回归最优模型,并赋值给probit.bic
summary(probit.bic)								


##############画出6个模型的ROC曲线来确定最终选哪一个模型########
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇R abalone data set 下一篇R系列:分词、去停用词、画词云(..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目