python - 在 Python 中可视化 T 分布时遇到问题

标签 python scipy statistics

我正在尝试向我正在编写的一些分析实用程序添加一个简单的 t 分数可视化(绘制 scipy 的 pdf 概率密度函数在一个区间内)。在此示例中,我绘制了学生 t 分布,以及给定问题集的关键 t 分数截止值。但是,据我所知,简单的 vis 并没有正确显示。

在这个例子中,我有一个 n=24 数据集,我正在尝试可视化它的 alpha=0.05 双尾测试(也就是统计显着性2.5% 在分布的任一尾部)。我希望临界 t 分数在 y(概率)值为 0.025 时与 t 分布相交,但 t 分布本身似乎被缩放/展平了?一定数量。

据我所知,t 分布与我期望的实际概率不匹配,但设置非常简单,我无法判断哪里出错了。我对统计学有些陌生,想知道我是否遗漏了一些基本知识?

## Basic T-Distribution
import scipy.stats as st
import matplotlib.pyplot as plt
import numpy as np

## Setup      
dof = 23        # Degrees of freedom
alpha = 0.05    # Significence level
ntails = 2      # Number of tails 

## Calculate critical t-score
tcrit = abs(st.t.ppf(alpha/ntails, dof))
# +=2.068

plt.figure()
xs = np.linspace(-10,10,1000)
plt.plot(xs, st.t.pdf(xs,dof), 'k', label="T-Distribution PDF")

## Plot some vertical lines representing critical t-score cutoff
critline = np.linspace(0,alpha/ntails)  # y range for critical line, AKA probability from 0-p*
xs_1 = len(critline) * [-tcrit]         # X ranges for plotting
xs_2 = len(critline) * [tcrit]
plt.plot(xs_1, critline, 'r', label="-t* for dof=23")
plt.plot(xs_2, critline,'r', label="t* for dof=23")
plt.legend()

T-Vis

最佳答案

PDF 是一个密度。 Y 轴不是以“概率”为单位,而是以“每单位 X 的概率”为单位。在 tcrit 处评估 PDF 以获得与曲线匹配的适当值。

试试这个来绘制垂直线:

plt.vlines([-tcrit, tcrit], 0.0, st.t.pdf(tcrit), colors='r')

关于python - 在 Python 中可视化 T 分布时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42331555/

相关文章:

python - 使用 GAE 用户服务 - 无法获取 "sign-in as a different user"

python - 如何指示哪个模型的字段引发了 ValidationError?

python - 启发式选择最大化点积的五个列数组

python - Python/Numpy 中包含 NAN 的数组的线性回归

python - Pandas 系列 – 最后 x 行中的最低值

python 生成器返回 ndarray

Python/Scipy Kolmogorov-Zurbenko 过滤器?

python - 在 scikit-learn LinearRegression 中查找 p 值(显着性)

python - 循环向量列表以创建每个向量的直方图

statistics - 如何标准化雷达图的统计数据