You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Python中可视化T检验对比矩阵?附LaTeX备选方案

Pairwise T-Test Results Visualization (Matrix/Table)

Got it, let's tackle this problem—you've got 5 variables with 10 pairwise t-test results and want to visualize them as a matrix or table. I'll walk you through two practical approaches: one using Python for quick, interactive visualization, and another with LaTeX for publication-ready formatting.

Python Approach

We'll use pandas to build a symmetric matrix of results, then either print a formatted table or use seaborn to create a heatmap (great for spotting patterns in significance).

Step-by-Step Code

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# Define your 5 variable names
var_names = ["Var1", "Var2", "Var3", "Var4", "Var5"]

# Replace this with your actual t-test results (store as a dict of (var_pair): result)
# You can use p-values, t-statistics, or significance markers here
ttest_results = {
    ("Var1", "Var2"): 0.023,
    ("Var1", "Var3"): 0.871,
    ("Var1", "Var4"): 0.001,
    ("Var1", "Var5"): 0.456,
    ("Var2", "Var3"): 0.124,
    ("Var2", "Var4"): 0.333,
    ("Var2", "Var5"): 0.049,
    ("Var3", "Var4"): 0.678,
    ("Var3", "Var5"): 0.901,
    ("Var4", "Var5"): 0.012
}

# Build a symmetric DataFrame matrix
ttest_matrix = pd.DataFrame(index=var_names, columns=var_names)

# Fill diagonal with a placeholder (self-comparisons are irrelevant)
for var in var_names:
    ttest_matrix.loc[var, var] = "—"

# Fill both upper and lower triangles with results
for (v1, v2), result in ttest_results.items():
    ttest_matrix.loc[v1, v2] = result
    ttest_matrix.loc[v2, v1] = result

# Option 1: Print a formatted text table
print("Pairwise T-Test Results Table:")
print(ttest_matrix.to_string(float_format="{:.3f}".format))

# Option 2: Create a heatmap for visualizing significance
plt.figure(figsize=(8, 6))
heatmap = sns.heatmap(
    ttest_matrix.astype(float),
    annot=True,
    cmap="coolwarm",
    fmt=".3f",
    xticklabels=var_names,
    yticklabels=var_names,
    cbar=True,
    mask=ttest_matrix == "—"  # Hide diagonal entries
)
heatmap.set_title("Pairwise T-Test P-Values Matrix")
plt.show()

Customization Tips

  • Swap p-values for t-statistics or significance labels (like * for p<0.05, ** for p<0.01) if that's more useful for your use case.
  • Adjust the cmap parameter in sns.heatmap to change color scheme (e.g., viridis for a more muted palette).
  • Add a threshold to highlight significant results (use sns.heatmap's annot_kws to color text based on p-value).

LaTeX Approach

If you need a publication-quality table or matrix, LaTeX is perfect. Below are two options: a formal table and a compact matrix, plus an optional highlighted version for significant results.

Option 1: Formal Table with Labels

\documentclass{article}
\usepackage{booktabs} % For clean table lines
\usepackage{xcolor} % Optional: For highlighting significant results

\begin{document}

\begin{table}[h]
    \centering
    \begin{tabular}{@{}lccccc@{}}
        \toprule
         & Var1 & Var2 & Var3 & Var4 & Var5 \\
        \midrule
        Var1 & — & 0.023 & 0.871 & 0.001 & 0.456 \\
        Var2 & 0.023 & — & 0.124 & 0.333 & 0.049 \\
        Var3 & 0.871 & 0.124 & — & 0.678 & 0.901 \\
        Var4 & 0.001 & 0.333 & 0.678 & — & 0.012 \\
        Var5 & 0.456 & 0.049 & 0.901 & 0.012 & — \\
        \bottomrule
    \end{tabular}
    \caption{Pairwise T-Test P-Values Matrix}
\end{table}

\end{document}

Option 2: Compact Matrix

\documentclass{article}
\usepackage{amsmath} % For matrix environment

\begin{document}

\section{Pairwise T-Test Results}
\[
\begin{pmatrix}
    — & 0.023 & 0.871 & 0.001 & 0.456 \\
    0.023 & — & 0.124 & 0.333 & 0.049 \\
    0.871 & 0.124 & — & 0.678 & 0.901 \\
    0.001 & 0.333 & 0.678 & — & 0.012 \\
    0.456 & 0.049 & 0.901 & 0.012 & —
\end{pmatrix}
\]
\textit{Note: Diagonal entries are marked with "—" as self-comparisons are irrelevant.}

\end{document}

Option 3: Highlight Significant Results

Add \textcolor{red}{...} around p-values below your significance threshold (e.g., p<0.05) to make them stand out:

\begin{tabular}{@{}lccccc@{}}
    \toprule
     & Var1 & Var2 & Var3 & Var4 & Var5 \\
    \midrule
    Var1 & — & \textcolor{red}{0.023} & 0.871 & \textcolor{red}{0.001} & 0.456 \\
    Var2 & \textcolor{red}{0.023} & — & 0.124 & 0.333 & \textcolor{red}{0.049} \\
    Var3 & 0.871 & 0.124 & — & 0.678 & 0.901 \\
    Var4 & \textcolor{red}{0.001} & 0.333 & 0.678 & — & \textcolor{red}{0.012} \\
    Var5 & 0.456 & \textcolor{red}{0.049} & 0.901 & \textcolor{red}{0.012} & — \\
    \bottomrule
\end{tabular}

内容的提问来源于stack exchange,提问作者Jiayang Zhuo

火山引擎 最新活动