R 初学者:Welch t 检验的循环

R Beginner: Loops on a Welch t-test

我刚开始使用 R 来帮助完成一个新的零售项目,虽然我可以输入一些基本功能,但我正在寻找一种更有效地进行销售比较的方法。以下是一个浓缩示例。

我想比较六种不同类型客户的总购买量的均值(注意使用具有 6 个级别的 MemberType 因子,每种类型的奖励会员注册一个)。

虽然我当然可以做这样的事情:

>m<-t.test(TotalPurchase[MemberType=='2'],TotalPurchase[MemberType=='4'])

对于每一对,我这里的 objective 是为了避免 运行 手动对每对因子水平进行测试。

在这个早期阶段,我在概念上不明白如何去做。是否可以在具有唯一因子水平的向量中使用该函数,例如

>tp<-data.frame(levels(MemberType))

?如果是这样,是否有关于 how/whether 构造嵌套 for 循环的任何见解,例如

>for(i in tp) function(i){
>##something like tt<-t.test(TotalPurchase[MemberType==i],##
>##+t.test(TotalPurchase[MemberType==i])##
>+}

多了一层?我也一直在研究 'apply' 函数族,但被 1) 需要两个输入到双样本 t.test 所困扰 和 2) for() 和 lapply() 参数中的索引语法告诉 R 在 t 检验中使用什么值向量。

对于此问题的任何具体帮助或对我在 R(或 Stack Overflow)中的格式设置的礼貌指导,这位新手将不胜感激。谢谢!

最直接的方法是在 stats 包中使用 pairwise.t.test()

  • 但你需要清楚什么类型的多重测试调整 你想用它来控制你的家庭明智的错误率。所以这是 确实是统计问题而不是编程问题。你 在 Bonferroni 还是其他人之间有偏好?
  • 您也不清楚是否使用合并方差。
  • 最后,你的数据不清楚。

如果您有一个包含以下变量的数据框:purchases 是测量变量,MemberType 是客户类别,ItemType 是项目类别,并且您需要 Bonferroni 校正和未合并的 SD,这将适用于示例项目类型 == a:

df <- data.frame(purchases= rnorm(100, 50, 20), 
      MemberType= factor(sample(c("a", "b", "c"), 100, replace= TRUE)),
      ItemType= factor(sample(c("d","e","f"), 100, replace=TRUE))
df2 <- df[df$ItemType == "a", ]
pairwise.t.test(df2$purchases, df2$MemberType, p.adj= "bonf", pool.sd= FALSE)

请提供您问题的完整描述,我可以根据需要更新此解决方案。