logit回归模型的参数估计过程_Logistic 回归模型的参数估计为什么不能采用最小二乘法?...

Logistic回归模型的参数估计通常采用迭代重加权最小二乘法(IRLS),而非经典最小二乘法,因为其误差无法直接量化。经典线性回归模型和Logistic回归模型在误差处理和模型结构上存在差异,Logistic模型通过logit函数模拟概率。IRLS方法允许处理离散的0和1残差,与极大似然估计相结合解决参数估计问题。
摘要由CSDN通过智能技术生成

统计狗来总结一下前面各个楼主的回答,先甩答案:

logistic回归模型的参数估计问题,是可以用最小二乘方法的思想进行求解的,但和经典的(或者说用在经典线性回归的参数估计问题)最小二乘法不同,是用的是“迭代重加权最小二乘法”(IRLS, Iteratively Reweighted Least Squares)。本质上不能使用经典的最小二乘法的原因在于,logistic回归模型的参数估计问题不能“方便地”定义“误差”或者“残差”。

下面是对经典线性回归问题和logistic回归问题的一些讨论。

(1)最小二乘/最小二乘法、最小二乘估计和极大似然估计的区别

最小二乘/最小二乘法可以看成是一种朴素的思想,即如果某种差异可以量化为实数,那么我们就可以(自然地)把这些差异的平方相加,将这个和作为一种目标函数。我记得我们高代有节课专门讲过“二乘”的矩阵形式,以及相关的“最小”这一优化目标的矩阵运算等等。

最二乘估计是指用最小二乘法对统计模型中的参数进行估计的估计方法。除了最小二乘估计,还有常用的极大似然估计、矩估计等参数估计的方法。对经典线性回归模型的参数估计来说,最小二乘估计和极大似然估计的结果是等价的,换句话说,对于其他模型,这种等价性就可能不成立。对于logistic回归模型来说,极大似然估计是没有解析解(closed form solution)的。

最小二乘估计和极大似然估计的不同在于优化的目标函数不同。最小二乘估计因为是用的最小二乘法,目标函数就是前面提到的那种“自然地”对“误差”或者“残差”的处理方式(这里“误差”和“残差”之所以加引号,是因为我们为了理解方便赋予了操作对象“某种差异”实际的意义);极大似然估计的目标函数是似然函数。可见,前者的目标函数依赖于我们对“误差”的选取,而后者依赖于数据的具体概率分布。最小二乘估计有很多良好的性质,这些性质是不依赖于具体概率分布的,仅需要满足Gauss-Markov假设即可。

(2)经典线性回归模型和logistic回归模型的区别

经典线性回归模型常用的形式是

equation?tex=y%3D%5Ctextbf%7BX%7D%5Cbeta%2B%5Cepsilon(*),

其中

在R语言中,可以使用以下两种方法估计Logistic回归模型的参数: 1. 最大似然估计法(Maximum Likelihood Estimation,MLE) 最大似然估计法是一种常用的参数估计方法,它通过最大化似然函数来估计模型参数。在Logistic回归模型中,似然函数可以表示为: L(β) = ∏[i=1 to n] {pi(yi) * (1-pi)(1-yi)} 其中,pi表示第i个观测值属于正类的概率,1-pi表示属于负类的概率。yi表示第i个观测值的实际类别(0或1)。β表示模型的参数向量。 R语言中,可以使用glm函数来实现最大似然估计法。例如,下面的代码展示了如何使用glm函数估计Logistic回归模型的参数: ``` # 读入数据 data <- read.csv("data.csv") # 构建Logistic回归模型 model <- glm(Y ~ X1 + X2 + X3, data = data, family = binomial(link = "logit")) # 查看模型参数 summary(model) ``` 其中,Y表示因变量,X1、X2、X3表示自变量。data表示数据框,family参数指定为binomial,表示二项分布。link参数指定为logit,表示使用Logistic函数作为链接函数。 2. 贝叶斯估计法(Bayesian Estimation) 贝叶斯估计法是一种基于贝叶斯定理的参数估计方法,它通过计算后验分布来估计模型参数。在Logistic回归模型中,可以使用MCMC(Markov Chain Monte Carlo)方法来生成后验分布。 R语言中,可以使用rjags包来实现贝叶斯估计法。例如,下面的代码展示了如何使用rjags包估计Logistic回归模型的参数: ``` # 读入数据 data <- read.csv("data.csv") # 构建模型字符串 model_string <- "model { # Priors beta[1] ~ dnorm(0, 1.0E-6) beta[2] ~ dnorm(0, 1.0E-6) beta[3] ~ dnorm(0, 1.0E-6) # Likelihood for (i in 1:N) { y[i] ~ dbern(p[i]) logit(p[i]) <- beta[1] + beta[2] * x1[i] + beta[3] * x2[i] } }" # 编译模型 model <- jags.model(textConnection(model_string), data = list(y = data$Y, x1 = data$X1, x2 = data$X2, N = nrow(data))) # 运行MCMC mcmc_samples <- coda.samples(model, variable.names = c("beta"), n.iter = 10000) # 查看参数的后验分布 plot(mcmc_samples) ``` 其中,Y表示因变量,X1、X2、X3表示自变量。data表示数据框,N表示数据个数。model_string是一个包含模型定义的字符串。dnorm表示正态分布,dbern表示伯努利分布,logit表示Logistic函数的逆函数。jags.model函数用于编译模型,coda.samples函数用于生成MCMC样本。最后,可以使用plot函数查看参数的后验分布。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值