python - stats.f_oneway Scipy Anova 返回 2 个包含 4 个值的数组

标签 python pandas scipy statistics anova

尝试对数据运行单向方差分析,其看起来大约如下所示:

Year   | Diversity  |
2010   |   6        |
2010   |   8        |
...    |   ...      |
2011   |   10       |
...    |   ...      |
2019   |   7        |

每年范围内的各个点的多样性值有 1827 行。我正在比较同比差异。当我这样做时

F, p = stats.f_oneway(df.loc[df["Year"] == 2010],
               df.loc[df["Year"] == 2011],
               df.loc[df["Year"] == 2012])

(这里我省略了其余的组,因为这非常难看,但我不知道如何才能通过方差分析测试的不同组)。我得到一个数组,其中 F 和 p 各有 2 个值:

F: type float64, size (2,),
-2.588805281700000000e+11, 4.908743340532151223e+00
p: type float64, size (2,),
nan, 0.00774507

从我读到的内容来看,我找不到任何人获得 2 个数组,它应该只是一个 F 值和一个 P 值,我做错了什么严重的事情吗? (df 中没有零或 NAN)。

当我这样做时:

mod = ols('Diversity ~ (Year)', data = df).fit()
mod.summary()

我得到一个正常的汇总表,F = 1.462,p = 0.227(与我上面的尝试不同)。

任何关于我的困惑的想法将不胜感激......

最佳答案

您的 DataFrame 有 2 列,即使在对其进行切片后也是如此,因此您将返回 2 个 p 值和 2 个 F 值,其中一个用于比较样本中的每一列。您应该将每个选择更改为仅包含 'Diversity' 列,例如:

df.loc[df['Year'] == 2010, 'Diversity']

如果您只想对样本中所有年份的多样性进行方差分析,您可以通过以下方式紧凑地完成此操作:

stats.f_oneway(*[s for idx, s in df.groupby('Year').Diversity])

MCVE

import pandas as pd
import numpy as np
from scipy import stats

l = [pd.DataFrame(np.random.randint(1, 10, (50, 4))) for i in range(7)]
                                              # |
                                              # 4 cols, should get 4 p-vals/F-vals

stats.f_oneway(*l)
#F_onewayResult(statistic=array([0.70527759, 0.2291319 , 0.03545031, 0.02568242]), 
#                  pvalue=array([0.49563511, 0.79550711, 0.96517894, 0.97464894]))
                               #    col1         col2        col3       col4

关于python - stats.f_oneway Scipy Anova 返回 2 个包含 4 个值的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57086446/

相关文章:

python - 在 EC2 上运行大数据计算时出现 dask.async.MemoryError

python - 在python中最小化函数的最快方法是什么?

python - Django 1.11 订单结果问题 - 注释计数返回错误值

Mac OS X 终端中的 Python unicode

python - 使用 Pandas 从 URL 读取嵌套 JSON

python - 形态侵 eclipse ——Scipy ndimage 和 Scikit image 的区别

python - 使用 python 进行线程处理 : local variables trouble

python - XML-RPC python 客户端引发 xml.parsers.expat.ExpatError 异常

python - 找到立方等于平方的数字对

python - 如何显示 Pandas 数据框的子集?