引数にseriesを複数いれると1元配置分散分析を行ってくれる関数(stats.f_oneway()) を使用しています。
https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.f_oneway.html
##Parameters: sample1, sample2, …array_like とあるのですが、sample1, sample2, ...をloop処理で加えていきたいのです。
まず以下のコードで動作確認してみました。
python
1import pandas as pd 2from scipy import stats 3 4 5df = pd.read_csv(FILE_OUT_DIR + '/data.csv') 6 7F, p = stats.f_oneway(df[df['group'] == 1]['BW'], 8 df[df['group'] == 2]['BW'], 9 df[df['group'] == 3]['BW']) 10print('ANOVA, p-value = '+ str(p)) 11
dfの中身は
group | id | BW |
---|---|---|
1 | 2 | 78 |
1 | 4 | 60 |
2 | 1 | 68 |
3 | 7 | 87 |
2 | 3 | 55 |
(以下略) |
こんな感じ
('group'は増えたり減ったりするので)
stats.f_oneway()の引数の中身をloop処理する必要があり、以下のようにしてみました。
python
1l = [] 2for i in range(len(gun)): # gunはgroup(1とか2とか)のリストです 3 s = df[df_m['group'] == i+1]['BW'] 4 l.append(s) 5 6F, p = stats.f_oneway(l) 7
TypeError: at least two inputs are required; got 1.
と返ってきます。
python
1F, p = stats.f_oneway(l[0], l[1], l[2])
ならば動くのですが…
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/03 22:39