【问题标题】:T-test in PandasPandas 中的 T 检验
【发布时间】:2012-11-04 11:06:35
【问题描述】:

如果我想在 Pandas 中计算两个类别的平均值,我可以这样做:

data = {'Category': ['cat2','cat1','cat2','cat1','cat2','cat1','cat2','cat1','cat1','cat1','cat2'],
        'values': [1,2,3,1,2,3,1,2,3,5,1]}
my_data = DataFrame(data)
my_data.groupby('Category').mean()

Category:     values:   
cat1     2.666667
cat2     1.600000

我有很多这样格式化的数据,现在我需要做一个T-测试看看cat1cat2 在统计上是不同的。我该怎么做?

【问题讨论】:

    标签: python pandas scipy statistics hypothesis-test


    【解决方案1】:

    编辑:我没有意识到这是关于数据格式的。你could use

    import pandas as pd
    import scipy
    two_data = pd.DataFrame(data, index=data['Category'])
    

    那么accessing the categories就这么简单

    scipy.stats.ttest_ind(two_data.loc['cat'], two_data.loc['cat2'], equal_var=False)
    

    loc operator 按标签访问行。


    作为@G Garcia said

    单面或双面依赖或独立

    如果您有两个独立样本,但您不知道它们的方差相等,您可以使用Welch's t-test。就这么简单

    scipy.stats.ttest_ind(cat1['values'], cat2['values'], equal_var=False)
    

    有关更喜欢 Welch 测试的原因,请参阅 https://stats.stackexchange.com/questions/305/when-conducting-a-t-test-why-would-one-prefer-to-assume-or-test-for-equal-vari

    对于两个依赖样本,可以使用

    scipy.stats.ttest_rel(cat1['values'], cat2['values'])
    

    【讨论】:

      【解决方案2】:

      我稍微简化了代码。

      from scipy.stats import ttest_ind
      ttest_ind(*my_data.groupby('Category')['value'].apply(lambda x:list(x)))
      

      【讨论】:

        【解决方案3】:

        这取决于你想要做什么样的 t 检验(单边或双边依赖或独立),但它应该很简单:

        from scipy.stats import ttest_ind
        
        cat1 = my_data[my_data['Category']=='cat1']
        cat2 = my_data[my_data['Category']=='cat2']
        
        ttest_ind(cat1['values'], cat2['values'])
        >>> (1.4927289925706944, 0.16970867501294376)
        

        它返回一个包含 t 统计量和 p 值的元组

        在此处查看其他 t 检验 http://docs.scipy.org/doc/scipy/reference/stats.html

        【讨论】:

          猜你喜欢
          • 2023-03-11
          • 1970-01-01
          • 2015-06-11
          • 2018-11-19
          • 2014-05-30
          • 2015-09-17
          • 2015-05-17
          • 2017-10-20
          • 1970-01-01
          相关资源
          最近更新 更多