- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个类似于这个的大型数据框:
In [1]: grades
Out[1]:
course1 course2
school class student
school1 class1 student1 2 2
student2 3 2
student3 1 3
student4 3 1
student5 3 1
... ... ...
class3 student86 3 1
student87 2 2
student88 1 1
student89 3 3
student90 0 1
[90 rows x 2 columns]
我想计算样本学校和每个子样本类(class)成绩的 Mann-Whitney 秩检验。我怎样才能使用 Pandas 和 scipy.stats.mannwhitneyu 做到这一点不遍历数据框?
最佳答案
您想要做的是在索引级别上使用 groupby
并应用调用 mannwhitneyu
的函数,传递两列 course1
和 类(class)2
。假设这是您的数据:
index = pandas.MultiIndex.from_product([
['school{0}'.format(n) for n in xrange(3)],
['class{0}'.format(n) for n in xrange(3)],
['student{0}'.format(n) for n in xrange(10)]
])
d = pandas.DataFrame({'course1': np.random.randint(0, 10, 90), 'course2': np.random.randint(0, 10, 90)},
index=index)
然后按学校计算Mann-Whitney U:
>>> d.groupby(level=0).apply(lambda t: stats.mannwhitneyu(t.course1, t.course2))
school0 (426.5, 0.365937834646)
school1 (445.0, 0.473277409673)
school2 (421.0, 0.335714211748)
dtype: object
并按类(class)完成:
>>> d.groupby(level=[0, 1]).apply(lambda t: stats.mannwhitneyu(t.course1, t.course2))
school0 class0 (38.5, 0.200247279189)
class1 (37.0, 0.169040187814)
class2 (46.5, 0.409559639829)
school1 class0 (33.5, 0.110329749527)
class1 (47.5, 0.439276896563)
class2 (30.0, 0.0684355963119)
school2 class0 (47.5, 0.439438219083)
class1 (43.0, 0.308851989782)
class2 (34.0, 0.118791221444)
dtype: object
groupby
的 levels
参数中的数字指的是您的 MultiIndex 的级别。因此,按学校按 0 级分组,按学校/类(class)组合按 0 级和 1 级分组。
关于python - 对 Pandas 数据框进行 Mann–Whitney U 检验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29816637/
我是 Python 新手,需要一些有关 xarray 的帮助。我有两个用于 future 和过去气候的 3 维数据数组(rlon、rlat、时间)。我想计算每个网格点的曼惠特尼 U 检验,以分析 fu
美好的一天。我正在使用我拥有的数据集搜索一些帮助/建议,我想为此运行 Mann-Whitney U 测试。一组虚拟的 data.frame 如下所示: Plant R1 R2 R3 R4 R5
我有一个表 (X, Y),其中 X 是一个矩阵,Y 是一个类向量。这里有一个例子: X = 0 0 1 0 1 and Y = 1 0 1 0 0 0 1 1
我想创建一个执行 Mann Whitney 测试的函数(或一种一次性执行测试的方法)。我想在同一时间内分析 2 个不同 CC 条件之间的 logSG 值。因此,对于以下数据帧,我想要 3 个对应于每个
我有一个数据框,如下所示。 我想要通过比较每一列来进行 Mann-whitney u 检验的 p 值。作为一个例子,我在下面尝试过。 from scipy.stats import mannwhitn
我有一个类似于这个的大型数据框: In [1]: grades Out[1]: course1 course2 school class st
我有一个循环,每次都给出新值 k1 和 k2,但问题是在我的数据集中,有些情况下 k1 和 k2 的所有值都为零。程序到他们那里,只是抛出一个错误,并没有完成循环,还有大量的计算。我怎样才能让这种情况
我想使用 scipy.stats.mannwhitneyu 计算 x > y 的单边 p 值功能: u_value, p_value = scipy.stats.mannwhitneyu(x, y)
我想知道为什么在 python 和 R 中进行 mann whitney u 测试时我的答案如此不同。在 python 中: from scipy.stats import mannwhitneyu
我通过 RStudio 1.2.5042 在 R 3.6.3 中使用 rstatix 库,并且在运行两个样本 Wilcoxon 又名 Mann-Whitney U 测试时得到了不可能的 p 值 1 .
我目前正在尝试使用 Mann-Whitney U Test,我发现 Apache Commons Math 已经实现了它。查阅了多个网站(Wiki就是其中之一),都表示本次测试的U统计量是U1和U2中
我通过 RStudio 1.2.5042 在 R 3.6.3 中使用 rstatix 库,并且在运行两个样本 Wilcoxon 又名 Mann-Whitney U 测试时得到了不可能的 p 值 1 .
我是一名优秀的程序员,十分优秀!