Statsmodels Logit模型同一变量系数与P值矛盾问题求助
分类变量重复条目问题分析与解决
核心原因
你猜测的细微空格差异就是问题根源。从输出的变量名能明显看到:
top_notes_me[T.orange (bitter)]top_notes_me[T. orange (bitter)]
后者在.后面多了一个空格,Statsmodels会把每个字符串完全一致的取值当作独立类别,哪怕仅差一个空格,也会被识别成两个不同的分组,所以才会出现重复条目,系数和P值的差异只是不同分组拟合结果的正常表现。
验证方法
可以用代码直接查看分类变量的唯一取值,确认空格问题:
print(df['top_notes_me'].unique())
运行后会看到类似['orange (bitter)', ' orange (bitter)']的结果,直观显示存在带空格和不带空格的重复取值。
解决步骤
- 清洗分类变量的字符串,去除首尾空格:
df['top_notes_me'] = df['top_notes_me'].str.strip() - 如果存在中间多余空格,可统一替换为单个空格:
df['top_notes_me'] = df['top_notes_me'].str.replace('\s+', ' ', regex=True) - 重新拟合Logit模型,此时重复类别会被合并,输出将不再出现重复条目。
内容的提问来源于stack exchange,提问作者user20479548
相关产品推荐
相关产品推荐

