【发布时间】:2017-12-07 20:12:57
【问题描述】:
鉴于来自Lock5Data 的美国社区调查数据集,我想计算每个种族组合的收入的 t-stat(及其 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 值结果?欢迎提供使我当前的解决方案更加优雅和便携的答案!
【问题讨论】:
标签: r