【发布时间】:2017-05-12 09:49:28
【问题描述】:
我有 20 列,每列代表一个问题(个人资料),我的调查中的受访者(在主题设计中)必须从 5 个选项中选择一个(从 A 到 E 的李克特量表)。 现在,我想统计测试不同问题(配置文件)中答案的分布是否不同。为此,我必须对配置文件可能的成对比较的交叉表运行 Stuart Maxwell 测试。
如果我只有一个比较,那么过程真的很简单: -1 例如对 Q1 和 Q2 的响应进行交叉表 (tab1) 2- 执行“irr”包中的 SM (stuart.maxwell.mh(tab1)) 测试。 3-提取p值
但是这样做超过 20 个问题太耗时了。 我需要一个函数或循环来进行测试并提取 p.values 并将它们打印在矩阵中。 有什么帮助吗?
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)
【问题讨论】:
-
编写一个函数,为单个成对比较产生所需的输出;使用
combn(simplify = FALSE)获取所有可能的成对比较的列表;使用lapply在该列表的元素上迭代函数;然后根据需要简化结果列表。 -
你能在这里做一个简单的例子吗?
-
不,来吧,伙计,这取决于你。如果您发布与您的数据和您开始使用的代码相似的数据,那么我们可以从那里获取。
标签: r matrix multiple-columns crosstab