Многотестовые p-значения отличаются по сравнению с призмой graphpad?

#python #statistics #data-science #statsmodels #anova

#питон #Статистика #наука о данных #статс-модели #anova

Вопрос:

У меня есть фрейм данных со столбцами: Время, идентификатор, Лекарство, Значение

Вот мой код о том, как я выполняю двухсторонние anova и мультиплетесты

 #libraries import pandas as pd import statsmodels.formula.api as sm from statsmodels.stats.anova import anova_lm from statsmodels.stats.multitest import multipletests import os  df= pd.read_excel(r"C:path.xlsm", sheet_name="test") #dataframe  order = [18,19,20,21,22,23,0] #sort 24 hour time starting at time 18hr  df['Drug']=pd.Categorical(df['Drug']) df['Time'] = pd.Categorical(df['Time'], categories=order)  #TWO-WAY ANOVA mod = sm.ols('Value~Drug Time Time*Drug', data = df).fit() aov = anova_lm(mod, type=2)  #Multi-test (mt) mt = pd.concat([mod.params,mod.pvalues],axis=1) mt.columns=['coefficient','pvalues'] mt = mt[mt.index.str.contains('Drug')] mt['corrected_p'] = multipletests(mt['pvalues'],alpha=0.05,method="sidak",is_sorted=True)[1]  

Я получаю следующие нескорректированные[‘pvalues’ и исправленные значения pvalues[‘corrected_p’] из выходных данных multi-test (mt):

 Index pvalues correct_p Drug[T.B] 0.0159475 0.106432 Time[T.19]:Drug[T.B] 0.0738362 0.41546  Time[T.20]:Drug[T.B] 0.0778909 0.43314  Time[T.21]:Drug[T.B] 0.0699678 0.398153  

Когда я использую один и тот же набор данных в graphpad prism, вместо этого я получаю эти значения (используя двустороннее anova и многопараметрическое сравнение sidak:

 Drug A-B Individual P value Adjusted P Value 18 0.0159 0.1064 19 0.9689 gt;0.999 20 gt;0.9999 gt;0.999 21 0.9379 gt;0.999  

Особенно для времени 19,20 и 21 скорректированное значение P существенно отличается, и я не уверен, почему. Я обеспокоен, если я неправильно закодировал свою статистику, вызвав разницу.

Будем рады предоставить дополнительную информацию по мере необходимости

Комментарии:

1. Каковы неисправленные значения pbalues mt['pvalues'] ?

2. неверные значения pval из mt[«значения pval»] равны 0,0159475, 0,0738362, 0,0778909, 0,0699678 в том же порядке Препарат[Т. Б],Время[Т. 19]:Препарат[Т. Б], Время[Т. 20]:Препарат[Т. Б], Время[Т. 21]:Препарат[Т. Б]. Я добавлю это к вопросу

3. в стороне is_sorted следует оставить значение False, если значения pvalues еще не отсортированы.

4. Являются ли нескорректированные значения одинаковыми в graphpad prism? Сидак-это просто одновременная настройка значений p, таких как бонферрони, не должно быть скачка в p-значениях, таких как gt;0.999 . Я предполагаю, что graphpad интерпретирует взаимодействие иначе, чем то, что у вас есть в версии statsmodels. (Я ничего не знаю о призме graphpad.)

5. Одно возможное различие: возможно, graphpad prism использует количество всех возможных взаимодействий в качестве соответствующего количества тестов, в то время как statsmodels использует только количество значений в списке.