R / Python доверительный интервал - PullRequest
0 голосов
/ 10 марта 2019

Просто пытаюсь выяснить, что такое R -> Python: почему эти два элемента не дают одинаковых результатов?

Расчет 95% доверительного интервала для выборочных данных со средним значением = 65, с = 22, n= 121.

R: tsum.test(n.x=121, mean.x=65, s.x=22)

дает 95% доверительный интервал 61.04014 68.95986

Python: stats.norm.interval(alpha=0.95, loc=65, scale=22/np.sqrt(121))

дает 95% достоверностьинтервал (61.080072030919894, 68.9199279690801)

Я думал, что это должны быть идентичные результаты, или я не использую соответствующую эквивалентную функцию Python для R tsum.test?

1 Ответ

0 голосов
/ 10 марта 2019

После дальнейшего расследования я вижу, что я ошибся, предполагая, что для этого используется stats.norm.

scipy.stats.t позволяет рассчитать степень свободы, которую R's tsum.test выполняет автоматически:

stats.t.interval(alpha = 0.95, df = 121-1, loc = 65, scale= 22/np.sqrt(121)) возвращает (61.04013918989445, 68.95986081010555)

, округляя до 5 знаков после запятой ответы, заданные tsum.test в R.

Общая функция, которую я использую, если это полезно,это:

def get_conf_interval_from_sample(n, mean, sigma, alpha = 0.95) :
    """Get confidence interval from sample data with sample of n, mean, sigma, where df = n-1
    Equivalent to getting confidence interval using t.test / tsum.test in R"""
    df = n-1
    scale = sigma / np.sqrt(n)
    return stats.t.interval(alpha=alpha, df=df, loc=mean, scale=scale)````
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...