您的位置:首页 > 其它

r语言做二分类logistic回归分析

2017-03-02 18:45 483 查看
#第1步:读入数据

setwd("C:/Users/IBM/Desktop/logsistic建模/3.2建模")#设定当前的工作目录,重要!

safe<-read.csv("model2.csv",header=T)

str(safe) #看表头

colnames(safe)#看列名

attach(safe)

cor(safe)   #变量间相关系数阵

#第2步:使用glm函数计算.

glm.safe<-glm(is_run~reg_age+reg_life+heart_num+max_period

+min_period+median25_period+median50_period+median75_period

+lost_num_m30+avg_income_fund+avg_amt_fund+avg_nums_fund

+avg_amt_p2p+avg_nums_p2p+log_num+avg_income_p2p

,data=safe,family=binomial)#logistic模型

summary(glm.safe)

#第3步:逐步回归

glm.safe1<-step(glm.safe)

summary(glm.safe1)#逐步回归

#第4步:模型解读

coef(glm.safe1)#用以解释模型

exp(glm.safe1$coefficients) #解释Odds比与x的关系

exp(confint(glm.safe1)) #回归系数的置信区间

xp05<-0/glm.safe1$coefficients[]

xp05 #求使得pi为0.5的x

ratio05<-glm.safe1$coefficients[]*0.25

ratio05 #pi为0.5处的pi关于x的变化率

#第5步:模型评价

#5.1计算决定系数

R2cox<-1-exp((glm.safe1$deviance-glm.safe1$null.deviance)/length(is_run))

#5.2计算Cox-Snell拟合优度

cat("Cox-Snell R2=",R2cox,"\n")

R2nag<-R2cox/(1-exp((-glm.safe1$null.deviance)/length(is_run)))

#5.3计算Nagelkerke拟合优度

cat("Nagelkerke R2=",R2nag,"\n")

#5.4残差分析

plot(residuals(glm.safe1))

#5.5异常值诊断

library(car)

influencePlot(glm.safe1)

#第6步:分类表

fitt.pi<-fitted(glm.safe1)#同predict(glm.safe1,data.frame(x2=x2),type="resp")

ypred<-1*(fitt.pi>0.5) #1*逻辑变量就变成了0和1变量

ypred

length(ypred)

n<-table(safe$is_run,ypred)

n

Percantage<-c(n[1,1]/sum(n[1,]),n[2,2]/sum(n[2,]))

Percantage

rbind(Category,Percantage)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息