R语言之Logic回归分析

理论上,回归分析是在目标变量为连续型数据的情况下建模的,它不能处理目标变量为分类型数据的情况。

而logic回归分析的思路是把分类变量(“是否开通VIP”)转化为连续变量(“开通VIP的概率”),进而使用回归分析的方法间接地研究分类分析的问题。

一、原理

假设vip变量为分类变量,其取值只有0和1,这是分类型变量,无法通过回归分析建模。

但是,vip取值为1的概率却是一个连续型变量(prob.vip),可以使用回归分析为prob.vip建模:

prob.vip=k1*x1+k2*x2+k3*x3+k4*x4+b

由于k1*x1+k2*x2+k3*x3+k4*x4+b 的取值范围是(-∞,+∞),而prob.vip的范围是[0,1],因此,使用y=1/(1+exp(-x))函数进行转化:

prob.vip=1/(1+exp(-(k1*x1+k2*x2+k3*x3+k4*x4+b)))

当prob.vip>0.5,则可以预测vip.predict=1,否则为0。

注:回归分析使用最小二乘法拟合模型参数;logic回归则使用最大似然法来估算。

二、R语言实现

glm()是用R语言实现logic回归分析的核心函数。

参数:

formula:设置线性拟合模型的形式

family:glm的算法族。logic回归分析,family设置为binomial("logit")

data:样本数据

代码:

(1)建立logic回归模型data.glm<- glm(vip~.,data=vip.data,family=binomial("logit"))
summary(data.glm)

可以使用step函数对模型进行修正:
data.glm<- step(data.glm)

(2)模型glm的输出项模型参数:data.glm$coefficients线性模型的预测数据:data.glm$linear.predictorsvip等于1的概率prob.vip: data.glm$fitted.values线性拟合模型的残差:data.glm$residuals

(3)模型预测预测测试数据:predict.vip <- ifelse(data.glm$fitted.values>= 0.5,1,0)predict.vip <- as.factor(predict.vip)

预测新数据:new.predict.vip<- predict(data.glm,newdata=test.vip.data) 线性拟合数据的预测值
new.predict.vip<- 1/(1+exp(-new.predict.vip)) 概率值
new.predict.vip<- as.factor(ifelse(new.predict.vip>= 0.5,1,0))预测最终值

(4)模型性能衡量performance<- length(which((predict.vip==vip.data$vip)==TRUE))/nrow(vip.data) 正确率
其中,length(which((predict.vip==vip.data$vip)==TRUE))表示预测值与实际样本值元素取值相等的数目。
时间: 2024-08-05 11:17:05

R语言之Logic回归分析的相关文章

R语言 多元线性回归分析

#线性模型中有关函数#基本函数 a<-lm(模型公式,数据源) #anova(a)计算方差分析表#coef(a)提取模型系数#devinace(a)计算残差平方和#formula(a)提取模型公式#plot(a)绘制模型诊断图#predict(a)用作预测#print(a)显示#residuals()计算残差#setp()逐步回归分析#summary()提取模型资料 #多元线性回归分析 #回归系数的估计 #显著性检验: 1回归系数的显著性检验 t检验 就是检验某个变量系数是否为0 2回归方程的显

R语言之线性回归分析

一.建立简单线性回归模型可使用函数lm实现,函数是围绕公式展开的,lm接受一个公式对象作为试图建立的模型,可以通过?formula来查询通用格式,data.frame也可以被明确指定,它包括所需的数据> library(RSADBE)> data(IO_Time)> IO_lm = lm(CPU_Time ~ No_of_IO,data=IO_Time)> class(IO_lm)> summary(IO_lm)结果中:F-statistic: 635.4 on 1 and

R语言之Logistic回归分析

一.probit回归模型在R中,可以使用glm函数(广义线性模型)实现,只需将选项binomial选项设为probit即可,并使用summary函数得到glm结果的细节,但是和lm不同,summary对于广义线性模型并不能给出决定系数,需要使用pscl包中的pR2函数得到伪决定系数,然后再使用summary得到细节> library(RSADBE)> data(sat)> pass_probit <- glm(Pass~Sat,data=sat,binomial(probit))&

R语言-回归分析笔记

使用若干自变量并建立公式,以预测目标变量 目标变量是连续型的,则称其为回归分析 (1)一元线性回归分析 y=kx+b sol.lm<-lm(y~x,data) abline(sol.lm) 使模型误差的平方和最小,求参数k和b,称为最小二乘法 k=cov(x,y)/cov(x,x) b=mean(y)-k*mean(x) 估计参数b,k的取值范围 p元模型 p是自变量数,n是样本数 [ki-sd(ki)ta/2(n-p-1),ki+sd(ki)ta/2(n-p-1)] k0表示回归模型的b;  

R语言 逐步回归分析

逐步回归分析是以AIC信息统计量为准则,通过选择最小的AIC信息统计量,来达到删除或增加变量的目的. R语言中用于逐步回归分析的函数 step()    drop1()     add1() #1.载入数据 首先对数据进行多元线性回归分析 tdata<-data.frame( x1=c( 7, 1,11,11, 7,11, 3, 1, 2,21, 1,11,10), x2=c(26,29,56,31,52,55,71,31,54,47,40,66,68), x3=c( 6,15, 8, 8, 6

R语言学习资源

入门视频教程 R语言初级课程(1)- R语言快速入门http://cos.name/videos/intro-2-r/ 代码 #对象 1+1*3 c(1,2,3,4,5) c('helloworld','i am a R user') c("hehe","haha") 1:6 6:1 exp(1:4) log(1:3) a<-c(1,2,3,4,5) a[1] a[1:3] a[-4] a>3 a[a>3] #数组,类型需要一致 x<-1:1

R语言实战(五)方差分析与功效分析

本文对应<R语言实战>第9章:方差分析:第10章:功效分析 ==================================================================== 方差分析: 回归分析是通过量化的预测变量来预测量化的响应变量,而解释变量里含有名义型或有序型因子变量时,我们关注的重点通常会从预测转向组别差异的分析,这种分析方法就是方差分析(ANOVA).因变量不只一个时,称为多元方差分析(MANOVA).有协变量时,称为协方差分析(ANCOVA)或多元协方差分析

R语言简单入门

运行R语言可以做哪些事? 1.探索性数据分析(将数据绘制图表) 2.统计推断(根据数据进行预测) 3.回归分析(对数据进行拟合分析) 4.机器学习(对数据集进行训练和预测) 5.数据产品开发 R语言包的使用 1.安装包 install.packages()//安装https://cran.r-project.org/ install_github()//从github安装 2.使用包 加载包library(caret)//括号为包的名字 data()//R自带的数据集(针对导入的包) ?func

R语言实战(八)广义线性模型

本文对应<R语言实战>第13章:广义线性模型 广义线性模型扩展了线性模型的框架,包含了非正态因变量的分析. 两种流行模型:Logistic回归(因变量为类别型)和泊松回归(因变量为计数型) glm()函数的参数 分布族 默认的连接函数 binomial (link = "logit") gaussian (link = "identity") gamma (link = "inverse") inverse.gaussian (lin