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)

你可能感兴趣的:(python利用似然比进行参数检验)