我想绘制基于subtype列的Mann检验(Wilcoxon秩和检验),该列包含normal、KIRP、KIRC、KICH数据。
我刚开始使用Python进行统计。
import pandas as pd
import plotly.express as px
from scipy.stats import mannwhitneyu
normal = df.iloc[:,7:-2][df['subtype'] == "normal"]
kirp = df.iloc[:,7:-2][df['subtype'] == "KIRP"]
kirc = df.iloc[:,7:-2][df['subtype'] == "KIRC"]
kich = df.iloc[:,7:-2][df['subtype'] == "KICH"]
nnormal, nkirp, nkirc, nkich = len(normal), len(kirp), len(kirc), len(kich)
U1, p = mannwhitneyu(normal, kirp, kirc, kich, method="exact")回溯:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/tmp/ipykernel_27/1709062782.py in <module>
----> 1 U1, p = mannwhitneyu(normal, kirp, kirc, kich, method="exact")
/opt/conda/lib/python3.7/site-packages/scipy/stats/_mannwhitneyu.py in mannwhitneyu(x, y, use_continuity, alternative, axis, method)
389
390 x, y, use_continuity, alternative, axis_int, method = (
--> 391 _mwu_input_validation(x, y, use_continuity, alternative, axis, method))
392
393 x, y, xy = _broadcast_concatenate(x, y, axis)
/opt/conda/lib/python3.7/site-packages/scipy/stats/_mannwhitneyu.py in _mwu_input_validation(x, y, use_continuity, alternative, axis, method)
136
137 bools = {True, False}
--> 138 if use_continuity not in bools:
139 raise ValueError(f'`use_continuity` must be one of {bools}.')
140
TypeError: unhashable type: 'DataFrame'下游代码:
U2 = nnormal*nkirp*nkirc*nkich - U1
_, pnorm = mannwhitneyu(normal, kirp, kirc, kich, method="asymptotic")
# Plot
fig = px.box(_, y="pnorm")
fig.show()期望输出示例:

发布于 2022-11-05 21:35:16
mannwhitneyu方法接受两个样本数组。您会得到错误,因为函数的第三个参数(use_continuity)可以是True或False。如果要将kirp、kirc和kich与正常样本进行比较,可以这样做:
u_kirp, p_kirp = mannwhitneyu(normal, kirp, method="exact")
u_kirc, p_kirc = mannwhitneyu(normal, kirc, method="exact")
u_kich, p_kich = mannwhitneyu(normal, kich, method="exact")https://stackoverflow.com/questions/74331424
复制相似问题