【发布时间】:2017-07-30 17:30:56
【问题描述】:
我有这个函数来执行t-test,样本和总体在字典中使用相同的键。效果很好,符合预期。
def ttest_(d):
result = {}
for k, (l, t) in d.items():
mean_sample = np.mean(t)
mean_population = np.mean(l)
sd_sample = np.std(t, ddof=1)
sd_population = np.std(l, ddof=1)
sample_size = len(t)
population_size = len(l)
result[k] = round(((mean_sample - mean_population) /
np.sqrt(((sd_sample/np.sqrt(sample_size))**2) +
((sd_population/np.sqrt(population_size))**2))), 2)
如何修改此函数以便:
--> 与其进行一次最终计算,不如在引导程序中按照以下方式进行 x 次:
for _ in range(1000)
--> 上一步将创建每个键的 T 检验分布,然后结果 [k] 将是第 n 个百分位值...。您可以使用参数指定,并给出一个值说0.05.
编辑#1: 为了清楚起见,我使用该函数的方式如下:
pairs = {}
for (k, v), (k2, v2) in product(population.items(), samples.items()):
if k == k2:
pairs.update({k: (v, v2)})
然后在这个字典上应用公式:
ttest_ = ttest_(pairs)
编辑#2: 保留这种在字典字典上应用函数的结构很重要,以便在不同样本和键之间建立关联,并获得相关的结果[k]。唯一的区别是添加了引导程序和百分位选择。
编辑#3: 感谢诺曼的问题。为了澄清这一点,在新公式中,您将相同的样本 [k] 与从总体 [k] 中抽取的随机子样本进行 x 次比较,这就是您获得分布的方式。这些子样本具有原始样本[k]的大小。
【问题讨论】:
-
我无法更改“寻找可靠来源的答案”......我不一定想要那样。只是一个很好的完整的好答案。谢谢
-
如何“创建每个键的 t 检验分布”?引导程序会做什么 x 次?是否应该从样本中抽取随机子样本,然后为它们计算t值?
-
@Norman 所以样本总是相同的(每个键),并且它与从总体中抽取的子样本进行比较,x 次,所以你得到 x 个不同的 t 值。
标签: python python-3.x numpy statistics