麻烦在Python中可视化T分布

时间:2017-02-19 19:06:09

标签: python scipy statistics

我试图将一个简单的t-score可视化添加到我正在编写的一些分析实用程序中(在一段时间内绘制scipy' s pdf概率密度函数)。在这个例子中,我绘制了学生的t分布,以及给定问题集的临界t分数截止。然而,就我所知,简单的看法并没有正确转出。

在这个例子中,我有一个n=24数据集,我试图想象一个alpha=0.05双尾测试(AKA统计显着性由分布尾部的2.5%表示) )。我期望临界t分数与t分布在y(概率)值0.025处相交,但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

1 个答案:

答案 0 :(得分:1)

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

尝试这样绘制垂直线:

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