如何基于排名对比DataFrame中N_offspring与survival行数据
问题与解决方案
给定如下部分DataFrame数据:
replicate N_offspring group survival rank offs rank sur 27 H-CC-81 339 CCC 87 7 13 28 H-CC-82 285 CCC 89 16 12 29 H-CC-83 261 CCC 82 18 19 30 H-CC-84 312 CCC 108 12 5 31 H-CC-85 205 CCC 84 26 15 32 H-CC-86 153 CCC 59 28 27
需求是基于rank offs和rank sur的排名,将对应排名的N_offspring与survival数据进行对比检验(例如对比rank offs=20对应的N_offspring和rank sur=20对应的survival)。
实现步骤
1. 提取指定排名的对应数据
以提取排名20的两组数据为例,用Python代码实现:
# 假设DataFrame变量名为df # 获取rank offs=20对应的N_offspring值 offs_rank_20 = df.loc[df['rank offs'] == 20, 'N_offspring'].values[0] # 获取rank sur=20对应的survival值 sur_rank_20 = df.loc[df['rank sur'] == 20, 'survival'].values[0]
2. 单一对排名数据的对比
如果仅需分析单一对排名的数据,可直接对提取出的两个值做描述性对比(如差值、比值);若需结合整体数据分布做推断,可参考后续全排名成对检验的方法。
3. 全排名成对数据的统计检验
若要对所有排名对应的N_offspring和survival做系统性检验,需先将两组数据按排名对齐,再选择合适的统计方法:
- 配对t检验:适用于数据满足正态分布的情况
- 威尔科克森符号秩检验:适用于非正态分布的配对数据
代码示例:
import scipy.stats as stats # 按各自排名排序,确保两组数据按排名顺序对应 sorted_offspring = df.sort_values('rank offs')['N_offspring'] sorted_survival = df.sort_values('rank sur')['survival'] # 配对t检验 t_statistic, p_value = stats.ttest_rel(sorted_offspring, sorted_survival) print(f"配对t检验:t值 = {t_statistic:.2f},p值 = {p_value:.4f}") # 威尔科克森符号秩检验 wilcoxon_stat, wilcoxon_p = stats.wilcoxon(sorted_offspring, sorted_survival) print(f"威尔科克森符号秩检验:统计量 = {wilcoxon_stat:.2f},p值 = {wilcoxon_p:.4f}")
内容的提问来源于stack exchange,提问作者Rimidelo
相关产品推荐
相关产品推荐

