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)
请提供您问题的完整描述,我可以根据需要更新此解决方案。
我刚开始使用 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)
请提供您问题的完整描述,我可以根据需要更新此解决方案。