Burada, dizi ortalamasının% 95 güven aralığını hesaplayan shasan kodunun kısaltılmış bir versiyonu a
:
import numpy as np, scipy.stats as st
st.t.interval(0.95, len(a)-1, loc=np.mean(a), scale=st.sem(a))
Ancak StatsModels'i kullanmak tconfint_mean
tartışmasız daha da güzel:
import statsmodels.stats.api as sms
sms.DescrStatsW(a).tconfint_mean()
Her ikisi için de temel varsayımlar, örneğin (dizi a
) bilinmeyen standart sapma ile normal bir dağılımdan bağımsız olarak çizildiğidir (bkz. MathWorld veya Wikipedia ).
Büyük örneklem büyüklüğü n için, örneklem ortalaması normal olarak dağıtılır ve biri kullanılarak güven aralığı hesaplanabilir st.norm.interval()
(Jaime'nin yorumunda önerildiği gibi). Ancak yukarıdaki çözümler, st.norm.interval()
çok dar güven aralıkları veren küçük n için de doğrudur (yani, "sahte güven"). Daha fazla ayrıntı için benzer bir soruya verdiğim yanıta bakın (ve Russ'ın yorumlarından biri burada).
Doğru seçeneklerin (esasen) aynı güven aralıklarını verdiği bir örnek:
In [9]: a = range(10,14)
In [10]: mean_confidence_interval(a)
Out[10]: (11.5, 9.4457397432391215, 13.554260256760879)
In [11]: st.t.interval(0.95, len(a)-1, loc=np.mean(a), scale=st.sem(a))
Out[11]: (9.4457397432391215, 13.554260256760879)
In [12]: sms.DescrStatsW(a).tconfint_mean()
Out[12]: (9.4457397432391197, 13.55426025676088)
Ve son olarak, kullanarak yanlış sonuç st.norm.interval()
:
In [13]: st.norm.interval(0.95, loc=np.mean(a), scale=st.sem(a))
Out[13]: (10.23484868811834, 12.76515131188166)