首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大熊猫两组间的t检验方法

大熊猫两组间的t检验方法
EN

Stack Overflow用户
提问于 2018-09-28 11:35:59
回答 1查看 1.2K关注 0票数 0

我的数据看起来是这样的:

代码语言:javascript
复制
exp    itr    res1
e01     1      20
e01     2      21 
e01     3      22
e01     4      23

e01     5      24
e01     6      25
e01     7      26
e01     8      27

e02     .       .
e02     .       .

我必须根据itr将数据分成两组,一组为itr 1-4,一组为itr 5-8。

然后我要计算这两组的t检验:

我目前的代码是:

代码语言:javascript
复制
 data_top4=data.groupby('exp').head(4)
 data_bottom4=data.groupby('exp').tail(4)

  tt_df.groupby('exp').apply(lambda df: 
  stats.ttest_ind(data.groupby('exp').head(4), data.groupby('exp').tail(4) 
  [0])

它不能正常工作并且有错误!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-28 11:42:20

您可以使用自定义函数:

代码语言:javascript
复制
from scipy.stats import ttest_ind

def f(x):

    cat1_1 = x.head(4)
    cat1_2 = x.tail(4)

    t, p = ttest_ind(cat1_1['res1'], cat1_2['res1'])
    return pd.Series({'t':t, 'p':p})     

out = data.groupby('exp').apply(f) 
print (out)
           t         p
exp                   
e01 -4.38178  0.004659

编辑:

代码语言:javascript
复制
def f(x):

    cat1_1 = x.head(4)
    cat1_2 = x.tail(4)

    t, p = ttest_ind(cat1_1, cat1_2)
    return pd.Series({'t':t, 'p':p})     

out = data.groupby('exp')['res1'].apply(f).unstack()
print (out)
           t         p
exp                   
e01 -4.38178  0.004659

或者:

代码语言:javascript
复制
def f(x, col):

    cat1_1 = x.head(4)
    cat1_2 = x.tail(4)

    t, p = ttest_ind(cat1_1[col], cat1_2[col])
    return pd.Series({'t':t, 'p':p})     

out = data.groupby('exp').apply(f, 'res1') 
print (out)
           t         p
exp                   
e01 -4.38178  0.004659
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52554488

复制
相关文章

相似问题

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