【问题标题】:I am trying to calculate the p_value using the stats model我正在尝试使用统计模型计算 p_value
【发布时间】:2021-05-10 22:04:20
【问题描述】:

这是我获取所需数字的代码

import statsmodels.api as sm
from statsmodels.stats.proportion import proportions_ztest

convert_old = len(df2[df2['group'] == 'control']['converted'] == 1)
convert_new = len(df2[df2['group'] == 'treatment']['converted'] == 1)
n_old =  len(df2[df2['group'] == 'control'])
n_new = len(df2[df2['group'] == 'treatment'])

实际型号为:

stat, pval = proportions_ztest([convert_new ,convert_old], [n_new, n_old])

我得到了这个结果:

pvalue 是:nan

我也收到了警告:

/opt/conda/lib/python3.6/site-packages/statsmodels/stats/weightstats.py:670:

 RuntimeWarning: invalid value encountered in double_scalars 
      zstat = value / std_diff

/opt/conda/lib/python3.6/site-packages/statsmodels/stats/weightstats.py:672:

 RuntimeWarning: invalid value encountered in absolute
      pvalue = stats.norm.sf(np.abs(zstat))*2 

【问题讨论】:

    标签: python pandas statsmodels


    【解决方案1】:

    我认为问题在于如何获得 convert_oldconvert_new 的数字。通过设置['converted'] == 1,您将根据每个单独的值获得一个具有真/假的系列,因此长度将不受影响,并且您将始终拥有相同的长度。为了获得正确的长度,您可以尝试:

    convert_old = len(df2[(df2['group'] == 'control') & (df2['converted'] == 1)]
    convert_new = len(df2[(df2['group'] == 'treatment') & (df2['converted'] == 1)]
    

    【讨论】:

    • 乐于助人!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    相关资源
    最近更新 更多