python 广义似然比_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,广义似然比)