对于以下每个样本大小 [3,5,7,9],我需要计算采样值的标准偏差的第 25 个百分位。试验总数为 10 次。
数据框
US China Korea India UK
196 213 9 77 84
105 122 16 52 60
346 305 -12 78 69
155 113 -27 42 30
210 200 -5 68 65
212 190 -10 70 62
227 219 -4 90 87
106 96 -9 89 81
367 326 -11 91 80
86 104 21 69 83
200 194 -3 77 75
我的代码:
sample_sizes = [5, 7, 9]
num_trials = 10
col_index = 3
p = 25
df=pd.read_csv(filename)
std_list=[]
for i in sample_sizes:
for j in range(num_trials):
Sample=df.sample(n=i, random_state=j)
col=Sample.iloc[:,col_index].std()
std_list.append(col)
ptile=np.percentile(std_list,p)
print(ptile)
上面的代码给出了以下 ptile 值:
9.079918996054708
9.408029717257989
11.572161922408418
但是,如果我确实删除了第一个循环并对样本大小的值进行硬编码,则该ptile
值会发生变化。
num_trials = 10
col_index = 3
p = 25
df=pd.read_csv(filename)
std_list=[]
for j in range(num_trials):
Sample=df.sample(n=7, random_state=j)
col=Sample.iloc[:,col_index].std()
std_list.append(col)
ptile=np.percentile(std_list,p)
print(ptile)
The code above gives `ptile = 11.878249130348483` for sample size 7
whereas the first code gives `ptile = 9.408029717257989` for a sample size of 7.
如果有人能解释这种不一致的原因,我将不胜感激。