You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python Pandas将R的Tukey HSD检验表转换为相关矩阵

解决TukeyHSD校正p值矩阵重排问题

步骤1:拆分组对索引

先把DataFrame的组对索引(如50-0)拆成两个分组列,对应矩阵的行和列:

import pandas as pd
import numpy as np

# 假设你的DataFrame名为tukey_df
tukey_df[['row_group', 'col_group']] = tukey_df.index.str.split('-', expand=True)

步骤2:构建初始矩阵

用pivot方法将拆分后的分组转为行列,填充对应p值:

# 生成初始矩阵,未出现的组对会显示缺失值
pivot_matrix = tukey_df.pivot(index='row_group', columns='col_group', values='p adj')

步骤3:补全对称位置的p值

组对A-B和B-A的校正p值完全一致,用转置矩阵补全缺失的对称位置:

# 合并原矩阵与转置矩阵,补全对称位置的p值
pivot_matrix = pivot_matrix.combine_first(pivot_matrix.T)

步骤4:整理行列顺序并填充对角线

指定时间组的正确排序,确保矩阵行列按0、5、10...60排列,同时将对角线(同一组比较)的p值设为1(或NaN,按需调整):

# 定义时间组的正确顺序
time_order = ['0', '5', '10', '20', '30', '40', '50', '60']
# 重新索引,确保行列包含所有时间组
pivot_matrix = pivot_matrix.reindex(index=time_order, columns=time_order)
# 填充对角线(同一组比较无统计意义,设为1)
np.fill_diagonal(pivot_matrix.values, 1.0)

处理后的pivot_matrix就是目标矩阵:行和列均为时间组,对应位置为两组间的校正p值,对角线为1。

内容的提问来源于stack exchange,提问作者Tiago Prazeres

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 00:33:12