首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python仅在对上执行t-test

Python仅在对上执行t-test
EN

Stack Overflow用户
提问于 2013-06-07 00:02:07
回答 1查看 301关注 0票数 2

嗨,前段时间我得到了帮助来实现这个功能,但我现在完全卡住了。

代码语言:javascript
复制
        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中的所有单词

代码语言:javascript
复制
    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

代码语言:javascript
复制
529 the
469 want
464 it
449 de
EN

回答 1

Stack Overflow用户

发布于 2013-06-07 00:39:50

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

代码语言:javascript
复制
t,p = ttest_ind([word_counts1[k] for k in common_words], [word_counts2[k] for k in common_words])

你需要遍历所有的common_words

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16966854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档