Python 仅对对执行 t 检验

Posted

技术标签:

【中文标题】Python 仅对对执行 t 检验【英文标题】:Python performing t-test only on pairs 【发布时间】:2013-06-02 17:49:23 【问题描述】:

嗨,不久前我得到了帮助来制作这个功能,但我现在卡住了。

        from scipy.stats import ttest_ind
    def input_file_to_dict(f):
            return dict((key, int(value)) for value, key in map(lambda line:line.split(), f))

    with open("count-pos.txt") as f:
            word_counts1 = input_file_to_dict(f)

    with open("count-neg.txt") as f:
            word_counts2 = input_file_to_dict(f)

查找 list1 和 list2 中的所有单词

    out = open('t-test_output.txt', 'w')
    common_words = set.intersection(set(word_counts1.keys()),    set(word_counts2.keys()))
    for line in common_words:

        t,p = ttest_ind([word_counts1[k] for k in common_words], [word_counts2[k] for k in common_words])

        print >> out, (t,p)

正如人们所看到的,我试图比较两个包含单词频率的列表,但是有些单词并没有出现在两个样本大小中。我希望对每个单词对进行 t 检验,以确定它们的方差。然而, 这是一遍又一遍地给我相同的 t 值和 p 值对。

有人有什么想法吗?

示例文件如下所示: count-pos.txt

529 the
469 want
464 it
449 de

【问题讨论】:

【参考方案1】:

此行在您的循环中每次都计算相同的值,因为您每次都传入所有 common_words 的计数:

t,p = ttest_ind([word_counts1[k] for k in common_words], [word_counts2[k] for k in common_words])

你需要遍历所有common_words吗?

【讨论】:

是的,它需要遍历所有 common_words

以上是关于Python 仅对对执行 t 检验的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法使用 postgresql 执行学生 t 检验

对矩阵中的每一行执行 t 检验 - 处理 NA

统计 | R语言执行两组间差异分析Wilcox秩和检验

分析oracle的执行计划(explain plan)并对对sql进行优化实践

python T检验

为 statsmodels t 检验转换数据框