首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配后的统计显著性检验

匹配后的统计显著性检验
EN

Stack Overflow用户
提问于 2021-08-23 10:36:54
回答 1查看 48关注 0票数 0

我有一个由四列和大约20000行组成的数据帧,如下所示。

代码语言:javascript
复制
import pandas as pd
import numpy as np
d = {'x': [1,1,0,1,0,0,1],'BPM':[70,55,45,np.nan,35,25,np.nan],'AGE': [50, 47,21, 50,24,47,16], 'WEIGHT': [50,100,50,np.nan,np.nan,100,27]}
df = pd.DataFrame(data=d)

x BPM AGE  WEIGHT 
1  70  50  50
1  55  47  100
0  45  21  50
1  nan 24  nan
0  35  50  nan
0  25  47  100
1  nan 16  27

在匹配年龄和体重后,“1”级和“0”级之间的"BPM“是否有显著差异?

有两个类别:0和1。两个类别中的样本数量不相等。我知道,首先我必须匹配值,然后才能应用t-test。我是这个领域的新手,所以我不知道如何继续。

EN

回答 1

Stack Overflow用户

发布于 2021-08-23 12:22:19

你可以手工计算t分数。

代码语言:javascript
复制
mean_bpm_df = df.groupby(['AGE','WEIGHT','x']).mean().unstack(level=-1)
mean_bpm_df.columns = ['mean_bpm_0','mean_bpm_1']
std_count_df = df.drop(columns='x').groupby(['AGE','WEIGHT']).agg(['std','count'])
std_count_df.columns = ['std_bpm','count_bpm']
t_df = (mean_bpm_df.mean_bpm_0 - mean_bpm_df.mean_bpm_1) / (std_count_df.std_bpm / np.sqrt(std_count_df.count_bpm))

现在,如果你也想要p值,这些也可以手工计算。假设采用双侧t检验(如果需要,可以对其进行修改)。

代码语言:javascript
复制
from scipy.stats import t
p_df = pd.DataFrame(index=t_df.index, data=2*(1 - t.cdf(abs(t_df), std_count_df.count_bpm-1)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68891122

复制
相关文章

相似问题

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