У меня есть код ниже, где я пытаюсь применить ztest пропорции одного образца к значениям в каждой строке в моих данных.У меня есть пример данных ниже из моего dataframe df.Я пытаюсь сравнить каждую пропорцию в значении с пропорцией, полученной из значения в счетчике, и количества испытаний из значения в obs.Я хочу значение ap для каждой записи.Вместо этого я, кажется, получаю одно значение p для всех записей.У меня есть несколько строк желаемого вывода ниже, чтобы проиллюстрировать, что я имею в виду.Может кто-нибудь подсказать, пожалуйста, что я делаю не так и как это исправить?Или предложить более привлекательный способ сделать это?Похоже, должен быть способ сделать это с пандами.
# code:
def pvl(x):
return sm.stats.proportions_ztest(x['count'],
x['value'],
x['obs'],
alternative='larger')[1]
df['pval']=df.apply(pvl,
axis=1
)
# sample data:
print(df)
count value obs
211.0 0.013354 15800.0
18.0 0.001139 15800.0
310.0 0.019620 15800.0
114.0 0.007215 15800.0
85.0 0.005380 15800.0
# sample output:
count value obs pval
211.0 0.013354 15800.0 0.5
18.0 0.001139 15800.0 0.5
310.0 0.019620 15800.0 0.5
114.0 0.007215 15800.0 0.5
85.0 0.005380 15800.0 0.5
# desired output:
count value obs pval
211.0 0.013354 15800.0 0.49
18.0 0.001139 15800.0 4.1454796845134295e-41
310.0 0.019620 15800.0 0.9999999999965842