Logistic回归模型(R语言)
1.分组数据的Logistic回归模型下面我们以一道例题来说明,R软件中实现分组数据的logistics回归模型:代码实现如下:data10.4<-read.csv("C:/Users/Administrator/Desktop/data10.4.csv",head=TRUE)# data10.4中保留的p1变量为逻辑变换后的变量lm10.4<-lm
1.分组数据的Logistic回归模型
下面我们以一道例题来说明,R软件中实现分组数据的logistics回归模型:

代码实现如下:
data10.4<-read.csv("C:/Users/Administrator/Desktop/data10.4.csv",head=TRUE)
# data10.4中保留的p1变量为逻辑变换后的变量
lm10.4<-lm(p1~x,weights=w,data10.4)
summary(lm10.4)
输出结果为:
通过加权最小二乘法得到的logistics回归方程为:
p^=exp(−0.849+0.149x)1+exp(−0.849+0.149x)\hat{p}=\frac{exp(-0.849+0.149x)}{1+exp(-0.849+0.149x)}p^=1+exp(−0.849+0.149x)exp(−0.849+0.149x)
这里需要说明的是分组数据的logistics回归只适用于样本量大的分组数据,对样本量小的未分组数据不适用,并且以组数ccc为回归拟合的样本量,拟合的精度低。
实际上,我们可以用最大似然估计直接拟合未分组数据的logistics回归模型,下面将介绍这种方法。
2.未分组数据的Logistics回归模型



代码实现如下:
library(DAAG)
fm<-glm(nomove~conc,family=binomial(link="logit"),data=anesthetic)
# nomove为上表中的y,conc为x
summary(fm)
p=predict(fm,type="response") # 计算y=1的概率的预测值
输出结果为:
输出结果中的z value的计算公式类似于线性回归中的t value,即
Z=βj^D(βj^)Z=\frac{\hat{\beta _{j}}}{\sqrt{D(\hat{\beta _{j}})}}Z=D(βj^)βj^
其中,βj^\hat{\beta _{j}}βj^是参数的估计值,D(βj^)\sqrt{D(\hat{\beta _{j}})}D(βj^)是估计参数的标准差,并且在假设βj^=0\hat{\beta _{j}}=0βj^=0成立时,ZZZ近似服从标准正态分布,因此检验的PPP值为P(∣Z∣>∣z∣)=2−2Φ(z)P(\left | Z \right |>\left | z \right |)=2-2\Phi (z)P(∣Z∣>∣z∣)=2−2Φ(z),Φ(z)\Phi (z)Φ(z)为标准正态分布的分布函数。
由此可知,该实例中回归系数是显著的,回归方程为:
p^=exp(−6.469+5.567x)1+exp(−6.469+5.567x)\hat{p}=\frac{exp(-6.469+5.567x)}{1+exp(-6.469+5.567x)}p^=1+exp(−6.469+5.567x)exp(−6.469+5.567x)
因此,易知麻醉剂的浓度超过6.469/5.567=1.1626.469/5.567=1.1626.469/5.567=1.162时,患者保持静止的概率大于0.5。另外,对应于30个样本自变量样本的p^\hat{p}p^,如果令p^>0.5\hat{p}>0.5p^>0.5时,y^=1\hat{y}=1y^=1;p^≤0.5\hat{p}\leq0.5p^≤0.5时,y^=0\hat{y}=0y^=0,将会发现有6个样本被误判,此时误判率为0.2,说明回归模型较理想。
Probit回归模型


代码实现如下:
data10.4<-read.csv("C:/Users/Administrator/Desktop/data10.4.csv",head=TRUE)
glm10.6<-glm(p~x,weight=n,family=binomial(link="probit"),data=data10.4)
# 变量p为实际购房比例,变量n为签订意向书的人数
summary(glm10.6)
输出结果为:
由输出结果得到回归方程:
Φ−1(p^)=−0.532+0.0935x\Phi ^{-1}(\hat{p})=-0.532+0.0935xΦ−1(p^)=−0.532+0.0935x
3.多类别Logistic回归

代码实现如下:
library(mlogit)
data("Fishing",package="mlogit")
Fish<-mlogit.data(Fishing,varying=c(2:9),shape="wide",choice="mode")
m<-mlogit(mode~0|income,data=Fish)
summary(m)
输出结果为:
由以上结果可知,4类别的频率分别为0.113,0.354,0.382和0.151,而且第一个类别beach的回归系数均取了0,因此回归系数(Coefficients)中没有beach这一类别。
另外,由似然比检验结果可知,回归模型整体是显著的,但是对应于自变量income的charter类别的回归系数是不显著的。
更多推荐


所有评论(0)