Home > Net >  R to Python t.test function conversion
R to Python t.test function conversion

Time:12-30

can someone help me transform this R t.test function to python? r code: t.test(y, mu = 85, paired = FALSE, var.equal =TRUE, alternative = "greater)

CodePudding user response:

You are testing a single sample x against a population mean mu, so the corresponding function from SciPy is scipy.stats.ttest_1samp. When a second sample y is not given to t.test, var_equal and paired are not relevant, so the only other parameter to deal with is alternative, and the SciPy function also takes an alternative parameter. So the Python code is

    from scipy.stats import ttest_1samp

    result = ttest_1samp(y, mu, alternative='greater')

Note that ttest_1samp returns only the t statistic (result.statistic) and the p-value (result.pvalue).

For example, here is a calculation in R:

> x = c(3, 1, 4, 1, 5, 9)
> result = t.test(x, mu=2, alternative='greater')
> result$statistic
      t 
1.49969 
> result$p.value
[1] 0.09699043

Here's the corresponding calculation in Python

In [14]: x = [3, 1, 4, 1, 5, 9]

In [15]: result = ttest_1samp(x, 2, alternative='greater')

In [16]: result.statistic
Out[16]: 1.499690178660333

In [17]: result.pvalue
Out[17]: 0.0969904256712105

CodePudding user response:

You may find this blog useful: https://www.reneshbedre.com/blog/ttest.html

This is below an example of conversion with bioinfokit package but you can use the scipy one.

# Perform one sample t-test using bioinfokit,
# Doc: https://github.com/reneshbedre/bioinfokit

from bioinfokit.analys import stat
from bioinfokit.analys import get_data
df = get_data("t_one_samp").data #replace this with your data file
res = stat()
res.ttest(df=df, test_type=1, res='size', mu=5,evar=True)
print(res.summary)

Out put :

One Sample t-test 

------------------  --------
Sample size         50
Mean                 5.05128
t                    0.36789
Df                  49
P-value (one-tail)   0.35727
P-value (two-tail)   0.71454
Lower 95.0%          4.77116
Upper 95.0%          5.3314
------------------  --------
  • Related