[SciPy-User] why does scipy.stats.t.ppf return negative values?

Skipper Seabold jsseabold at gmail.com
Mon Jun 4 21:42:40 EDT 2012


On Mon, Jun 4, 2012 at 9:22 PM, pybokeh <pybokeh at gmail.com> wrote:
> I am reviewing sample problems in my statistics book from college.  When I
> look up the percentage point for t-distribution in the appendix of the book,
> it lists positive values.  When I use say for example:
> stats.t.ppf(0.025,15), it shows -2.131, whereas, my stat book shows 2.131.
> I tried other parameters and I get same values as what my stat book shows,
> but again the values it returns are negative.
>

You're in the left tail of the distribution. It's symmetric about
zero. 2.5 % of zero mean, unit variance numbers that follow Student's
t distribution are less than -2.131. 97.5% are less than 2.131.

nobs = 100000.
np.random.seed(12345)
rvs = stats.t(15).rvs(nobs)

print np.sum(rvs<stats.t.ppf(.025, 15))/nobs
#0.02548
print np.sum(rvs<stats.t.ppf(1-.025, 15))/nobs
#0.97441

stats.t.ppf(1 - .025, 15) == np.abs(stats.t.ppf(.025, 15))

Though you may notice things getting screwy close to 1 and 0,
depending on the implementation

alpha = 1e-9
stats.t.ppf(1 - alpha, 15) == np.abs(stats.t.ppf(alpha, 15))

alpha = np.linspace(0,1,100)
stats.t.ppf(alpha, 15)

Skipper



More information about the SciPy-User mailing list