logistic模型显著性检验
时间: 2023-09-27 15:10:06 浏览: 319
在 logistic 回归中,我们可以使用 Wald 检验或似然比检验来检验模型中自变量的显著性。
1. Wald 检验:Wald 检验是一种基于参数估计和标准误差的检验方法。我们可以计算每个自变量的 Wald 统计量,然后使用标准正态分布的临界值或 p 值来检验自变量的显著性。如果 Wald 统计量的绝对值大于临界值,或者 p 值小于显著性水平,则可以拒绝原假设,即自变量对因变量的影响是显著的。
2. 似然比检验:似然比检验是一种比较两个模型的方法,其中一个模型是包含所有自变量的完整模型,另一个模型是去除某个自变量的约简模型。我们可以计算这两个模型的似然比统计量,然后使用卡方分布的临界值或 p 值来检验自变量的显著性。如果似然比统计量的值大于临界值,或者 p 值小于显著性水平,则可以拒绝原假设,即自变量对因变量的影响是显著的。
一般来说,我们会同时使用这两种方法来检验 logistic 模型中自变量的显著性。
相关问题
logistic模型显著性检验的例题
假设我们有一个二分类的 logistic 回归模型,我们想要进行显著性检验,看看这个模型是否能够有效地区分两个不同的类别。下面是一个简单的例子:
假设我们有一个数据集,其中包含了一些人的性别和他们是否购买了某个产品的信息。我们想要使用 logistic 回归模型来预测一个人是否会购买该产品,并且想要进行显著性检验,看看这个模型是否有效。
首先,我们需要运行 logistic 回归模型,然后检查模型的系数和截距项是否显著不为零。如果一个系数或截距项的 p 值小于我们选择的显著性水平(通常是 0.05),那么我们就可以认为这个系数或截距项是显著的,即我们可以拒绝它们等于零的假设。
例如,假设我们运行了一个 logistic 回归模型,其中我们使用性别和年龄作为预测变量来预测一个人是否会购买该产品。我们可以得到以下的模型输出:
```
Call:
glm(formula = Bought ~ Gender + Age, family = "binomial", data = Data)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.4361 -0.8101 -0.4778 0.8448 2.3113
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.980e-01 2.311e-01 -0.857 0.391454
GenderMale 1.034e+00 2.309e-01 4.479 7.50e-06 ***
Age 3.982e-02 9.933e-03 4.008 6.08e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 228.08 on 199 degrees of freedom
Residual deviance: 196.42 on 197 degrees of freedom
AIC: 202.42
Number of Fisher Scoring iterations: 5
```
从输出中,我们可以看到,`GenderMale` 和 `Age` 系数的 p 值都小于 0.05,因此我们可以认为它们是显著的。这意味着性别和年龄这两个变量可以有效地区分两个不同的类别。同时,截距项的 p 值大于 0.05,因此我们不能拒绝截距项等于零的假设,即截距项不显著。
综上所述,我们可以得出结论,性别和年龄这两个变量可以有效地预测一个人是否会购买该产品,而截距项则没有显著的影响。
logistic模型系数显著性检验的代码
进行logistic回归后,可以通过计算系数的标准误差和z值来确定系数的显著性。以下是一个示例代码:
```python
import statsmodels.api as sm
# 加载数据
data = sm.datasets.fair.load_pandas().data
# 添加一个二元变量 affair,表示是否有婚外情
data['affair'] = (data.affairs > 0).astype(int)
# 创建X和y,并添加常数项
y = data.affair
X = sm.add_constant(data.drop(['affair', 'affairs'], axis=1))
# 拟合logistic回归模型
model = sm.Logit(y, X).fit()
# 计算系数的标准误差和z值
params = model.params
std_err = model.bse
z_values = params / std_err
# 打印结果
p_values = [2 * (1 - stats.norm.cdf(abs(z))) for z in z_values]
coefs_result = pd.DataFrame({'coef': params, 'std err': std_err, 'z': z_values, 'p-value': p_values})
print(coefs_result)
```
在这个示例代码中,我们使用了statsmodels库来拟合logistic回归模型,并计算系数的标准误差和z值。然后,我们使用正态分布来计算系数的p值,并将结果打印出来。
阅读全文