# Source code for simplestatistics.statistics.t_test

# I need sane division that returns a float not int
from __future__ import division

from .decimalize import decimalize
from .mean import mean
from .standard_deviation import standard_deviation

[docs]def t_test(sample, x): """ A one-sample t-test_ is a test that compares the mean of a sample to a known value, x. In this case, we're trying to determine whether the sample mean is equal to the value that we know, which is x. Usually the results are used to look up a p-value_, which, for a certain level of significance, will let you determine whether the null hypothesis (that there is no real difference between the mean of the sample and provided x) can be rejected or not. .. _t-test: http://en.wikipedia.org/wiki/Student's_t-test .. _p-value: http://en.wikipedia.org/wiki/P-value Equation: .. math:: t = \\frac{\\bar{X} - \\mu}{sd_X} :math:\\bar{X} is the sample mean :math:\\mu is the provided value :math:sd_X is the sample standard deviation Args: sample: A list of numerical objects (the sample) x: The provided value to compare the mean of the sample to. Returns: A numerical object. Example: >>> t_test([1, 2, 3, 4, 5, 6], 3.385) 0.150570344262835 """ sample = decimalize(sample) x = decimalize(x) mean_sample = decimalize(mean(sample)) # Square root the length of the sample rootN = pow(len(sample), 0.5) rootN = decimalize(rootN) # get standard deviation of sample sample_sd = decimalize(standard_deviation(sample)) # Compute the known value against the sample, # returning the t value t_statistic = ((mean_sample - x) / sample_sd) * rootN return(float(t_statistic))