gpt4 book ai didi

r:用 t.test 中的 t 统计量和 p 值填充两个数据框列

转载 作者:行者123 更新时间:2023-12-01 19:35:41 26 4
gpt4 key购买 nike

鉴于 Lock5Data 中的美国社区调查数据集,我想计算每种种族组合的收入 t 统计数据(及其 Bonferroni 校正 p 值)。我想将结果存储在包含“race1”、“race2”、“tstat”和“pval”列的数据框中。这样我就可以对数据框进行排序,以显示收入中最大(或最显着)的差异。

library(Lock5Data)
data("ACS")
ACS$Sex <- factor(ACS$Sex, labels = c("Female","Male"))
sub_acs <- subset(ACS, select = c("Income","Sex","Race"))
sub_acs <- na.omit(sub_acs)

# form results df (t_df)
race_unique <- unique(sub_acs$Race)
t_df <- expand.grid(race1 = race_unique, race2 = race_unique)
t_df <- t_df[t_df$race1 != t_df$race2,]
rownames(t_df) <- NULL

# fill df col with t-stat
t_df$tstat <- t.test(sub_acs[sub_acs$Race == t_df$race1,]$Income,
sub_acs[sub_acs$Race == t_df$race2,]$Income,
p.adjust.methods='bonferroni')$statistic

# fill df col with p_val
t_df$pval <- t.test(sub_acs[sub_acs$Race == t_df$race1,]$Income,
sub_acs[sub_acs$Race == t_df$race2,]$Income,
p.adjust.methods='bonferroni')$p.value

不幸的是,结果 df t_df 似乎只显示所有行重复的每个测试的第一个结果。如何正确映射 t 统计量和 p 值结果?欢迎让我当前的解决方案更加优雅和便携的答案!

最佳答案

考虑 Map(mapply 的简化包装器)并使用 t_df 作为辅助数据帧,将唯一值传递到 多种应用方法。

t_df <- subset(expand.grid(race1 = race_unique, race2 = race_unique), race1 < race2)

ttest_proc <- function(r1, r2) {
output <- t.test(sub_acs[sub_acs$Race == r1,]$Income,
sub_acs[sub_acs$Race == r2,]$Income,
p.adjust.methods='bonferroni')

df <- data.frame(race1 = r1,
race2 = r2,
t_stat = output$statistic,
p_val = output$p.value)
return(df)
}

df_list <- Map(ttest_proc, t_df$race1, t_df$race2)

final_df <- do.call(rbind, df_list)

关于r:用 t.test 中的 t 统计量和 p 值填充两个数据框列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47703029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com