首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过R中的循环列运行多个Stuart-Maxwell测试

通过R中的循环列运行多个Stuart-Maxwell测试
EN

Stack Overflow用户
提问于 2017-05-12 09:49:28
回答 1查看 115关注 0票数 0

我有20栏分别代表一个问题(简介),在我的调查中,受访者(在主题设计范围内)必须从5个选项中挑选一个(从A到E的likert量表)。现在我想从统计学上测试答案在不同的问题(配置文件)中的分布是否不同,所以我必须在可能的剖面配对比较的交叉选项卡上运行Stuart测试。

因此,如果我只有一个比较:-1在Q1和Q2上做响应的交叉选项卡(Q2),例如2-做来自"irr“包的SM (stuart.maxwell.mh (tab1) )测试,则过程非常简单。3-提取p值

但是这样做太费时了,超过20个问题。我需要一个函数或循环来做测试,提取p.values并将它们打印在一个矩阵中。有什么帮助吗?

代码语言:javascript
复制
data <- data.frame(Q1=sample(1:5, 20, replace=T),
               Q2=sample(1:5, 20, replace=T),
               Q3=sample(1:5, 20, replace=T),
               Q4=sample(1:5, 20, replace=T),
               Q5=sample(1:5, 20, replace=T),
               Q6=sample(1:5, 20, replace=T),
               Q7=sample(1:5, 20, replace=T),
               Q8=sample(1:5, 20, replace=T),
               Q9=sample(1:5, 20, replace=T),
               Q10=sample(1:5, 20,replace=T) )  #fake data

choose(n=10, k=2)   # possible pairwise comparisons  n!/k!(n-k)!

library(irr)   # to run Stuart-Maxwell test
crosstab1<-table(data$Q1,data$Q2)
test1<-stuart.maxwell.mh(crosstab1)    
p.value1 <- (test1$p)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-12 12:47:30

您可以通过将combnapply配对来实现这一点。从combn(names(data), m = 2, simplify = FALSE)中,您可以得到data中所有成对的列组合的列表。然后,您可以从分析步骤中创建一个函数,并将其封装在对sapply的调用中,以便对列表中的元素进行迭代。如果其中一些测试将失败,您可以使用try,然后在尝试错误存在的情况下对输出进行条件设置。

代码语言:javascript
复制
set.seed(1)
n <- 10
data <- as.data.frame(replicate(n, sample(1:5, 20, replace=T)))
names(data) <- paste0("Q", seq(n))

sapply(combn(names(data), 2, simplify = FALSE), function(i) {

    require(irr)

    xtab <- table(data[,i[1]], data[,i[2]])

    test <- try(stuart.maxwell.mh(xtab))

    ifelse(class(test) == "try-error", NA, test$p)

})

结果(省略错误信息):

代码语言:javascript
复制
 [1] 0.60653066 0.14569903 0.76409383 0.67869842 0.30610257 0.56851257 0.29978059         NA 0.50186668 0.40946486         NA 0.96507339 0.79040671 0.65190962
[15] 0.04643301 0.31731051 0.19468671 0.13960650 0.32043451 0.18998439 0.05035511 0.26611587 0.31731051 0.10539922 0.42712948 0.79543629 0.43459821 0.12994287
[29] 0.15729921         NA 0.42313825 0.69285237 0.20373938 1.00000000 0.71653131 0.55782540 0.31890656 0.22313016 0.57637784 0.14830902 0.31731051 0.40839235
[43]         NA 0.05488579 0.31731051
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43934605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档