python利用似然比进行参数检验

    在用sklearn进行逻辑回归的时候,如果想要查看变量的p值是否足够小,那么就只能自己计算p值。似然比是逻辑回归参数检验的一种方法

    假设我们的逻辑回归有n个特征,需要对其中的x1特征对于的参数w1做参数检验

    1、计算包含全部特征的预测概率似然估计L0

    2、扣除x1特征进行重新拟合逻辑回归,计算新的逻辑回归模型的似然估计L1

    3、计算2*ln(L0 / L1)服从自由度为1的卡方分布

 

import copy

def likelihood(pred,y):
    if not isinstance(y,list):
        yt = y.tolist()
    else:
        yt = copy.copy(y)
    ss = 0
    for i in range(len(yt)):
        ss += np.log(pred[i][yt[i]])
    return ss

 

from scipy.stats import chi2

# lr为包含所有特征的模型,X_train为包含所有特征自变量,y_train为包含所有特征的因变量

pred = lr.predict_proba(X_train)
total_likelihood = likelihood(pred,y_train)
for i in range(len(x_cols)):

    # 统计所有特征的pvalue
    # 计算扣除col的预测值
    left_col = x_cols[:i] + x_cols[i+1:]
    left_train_x = X_train.loc[:,left_col]
    left_lr =  LogisticRegression(penalty='l2', C=0.9, n_jobs=-1)
    left_lr.fit(left_train_x, y_train)
    left_pred = left_lr.predict_proba(left_train_x)
    left_likelihood = likelihood(left_pred,y_train)
    ch2_value = (total_likelihood  - left_likelihood) * 2
    pvalue = chi2.sf(ch2_value, 1)
    print(x_cols[i],pvalue)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值