在Python

时间:2015-05-22 07:10:55

标签: numpy statistics scipy statsmodels

有没有办法可以在Python中找到r置信区间?

在R中我可以做类似的事情:

cor.test(m, h)

    Pearson's product-moment correlation

data:  m and h
t = 0.8974, df = 4, p-value = 0.4202
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.6022868  0.9164582
sample estimates:
      cor 
0.4093729

在Python中,我可以使用:

计算r(cor)
r,p = scipy.stats.pearsonr(df.age, df.pets)

但这不会返回r置信区间。

1 个答案:

答案 0 :(得分:8)

这是计算内部信心的一种方法

首先得到相关值(pearson' s)

In [88]: z = np.arctanh(corr[0])

In [89]: z
Out[89]: 0.62007264620685021

使用Fisher变换得到z

In [90]: sigma = (1/((len(df.index)-3)**0.5))

In [91]: sigma
Out[91]: 0.013840913308956662

并且,sigma值,即标准误差

two-sided

获得正常连续随机变量的正常95%区间概率密度函数应用In [92]: cint = z + np.array([-1, 1]) * sigma * stats.norm.ppf((1+0.95)/2) 条件公式

In [93]: np.tanh(cint)
Out[93]: array([ 0.53201034,  0.56978224])

最后采用双曲正切来获得95%的区间值

{{1}}