简体   繁体   English

如何比较python中置信区间的大小

[英]How to compare the sizes of confidence intervals in python

I have a dataframe and I am finding the confidence intervals across each row.我有一个数据框,我正在寻找每一行的置信区间。 My actual dataframe is hundreds of rows long, but here is an example:我的实际数据帧有数百行长,但这是一个示例:

df = pd.DataFrame({'nums_1': [1, 2, 3], 'nums_2': [1, 1, 5], 'nums_3' : [8,7,9]})    


df['CI']=df.apply(lambda row: stats.t.interval(0.95, len(df)-1, 
loc=np.mean(row), scale=stats.sem(row)), axis=1).apply(lambda x: np.round(x,2))

I also want to calculate the width of each confidence interval.我还想计算每个置信区间的宽度。 I tried the the following, but it did not work我尝试了以下方法,但没有用

df['width']=df.apply(lambda row: stats.t.interval(0.95, len(df)-1, 
loc=np.mean(row), scale=stats.sem(row)), axis=1)[1] - df.apply(lambda row: 
stats.t.interval(0.95, len(df)-1, 
loc=np.mean(row), scale=stats.sem(row)), axis=1)[0]

IIUC, you want to compute the difference between upper from lower in the confidence interval, you can try this: IIUC,你想计算置信区间中上与下之间的差异,你可以试试这个:

df['CI'].apply(lambda x: x[1] - x[0])

If you have this:如果你有这个:

>>> from scipy import stats
>>> import numpy as np
>>> df = pd.DataFrame({'nums_1': [1, 2, 3], 'nums_2': [1, 1, 5], 'nums_3' : [8,7,9]})
>>> df['CI']=df.apply(lambda row: stats.t.interval(0.95, len(df)-1, loc=np.mean(row), scale=stats.sem(row)), axis=1).apply(lambda x: np.round(x,2))
>>> df['CI']
0    [-6.71, 13.37]
1    [-4.65, 11.32]
2    [-1.92, 13.26]
Name: CI, dtype: object

you get this:你得到这个:

>>> df['width'] = df['CI'].apply(lambda x: x[1] - x[0])
>>> df
    nums_1  nums_2  nums_3  CI              width
0   1       1       8       [-6.71, 13.37]  20.08
1   2       1       7       [-4.65, 11.32]  15.97
2   3       5       9       [-1.92, 13.26]  15.18

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM