Как динамически передать аргументы в тест anova? - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть df, из этого df я хочу передать аргументы для теста Anova.но проблема здесь в том, что значения df являются динамическими.Как передать аргументы в scipy.stats.f_oneway this.

Например:

    num    cat
0   164  type1
1   172  type1
2   168  type1
3   177  type1
4   156  type1
5   195  type1
6   178  type2
7   191  type2
8   197  type2
9   182  type2
10  185  type2
11  177  type2
12  175  type3
13  193  type3
14  178  type3
15  171  type3
16  163  type3
17  176  type3
18  155  type4
19  166  type4
20  149  type4
21  164  type4
22  170  type4
23  168  type4

Я должен передать значения, как показано ниже,

t1 = [164, 172, 168, 177, 156, 195]
t2 = [178, 191, 197, 182, 185, 177]
t3 = [175, 193, 178, 171, 163, 176]
t4 = [155, 166, 149, 164, 170, 168]

F, p = stats.f_oneway(t1,t2,t3,t4)

В приведенном выше подходеЯ должен хранить значения каждого типа в отдельной переменной.Но я хочу избежать этого.потому что мои ценности динамичны.Например, приведенный выше пример df имеет только 4 типа, здесь этот 4 является динамическим, он может быть любым во время выполнения.

Пока что я могу получить значения в списке, используя ниже.

result = df.groupby(1)[0].apply(list).values.tolist()

Но я не знаю, как передать это значение в scipy.stats.f_oneway.

Пожалуйста, дайте хороший подход для решения этой проблемы.

1 Ответ

0 голосов
/ 03 декабря 2018

Используйте * для списков распаковки :

result = df.groupby('cat')['num'].apply(list)
print (result)
cat
type1    [164, 172, 168, 177, 156, 195]
type2    [178, 191, 197, 182, 185, 177]
type3    [175, 193, 178, 171, 163, 176]
type4    [155, 166, 149, 164, 170, 168]
Name: num, dtype: object

F, p = scipy.stats.f_oneway(*result)
print (F)
5.406342913776015
print (p)
0.0068759477547351
...