跨列自动执行卡方检验
Automate Chi-square across columns
我想使用卡方检验数据集。怎么做,使用 loop for 或 sapply。
这是一组示例数据:
n<-40
set.seed(1)
data <- data.frame(v1.1=sample(c('0','1'),n,replace=T),v1.2=sample(c('0','1'),n,replace=T),v1.3=sample(c('0','1'),n,replace=T),v1.4=sample(c('0','1'),n,replace=T),v1.5=sample(c('0','1'),n,replace=T),m1=sample(c('1','2'),n,replace=T))
我想用变量 m1 测试所有名为 v1.x 的变量。就这些了。
我希望避免这样的情况:
chisq.test(table(data$v1.1,data$m1))
chisq.test(table(data$v1.2,data$m1))
chisq.test(table(data$v1.3,data$m1))
chisq.test(table(data$v1.4,data$m1))
chisq.test(table(data$v1.5,data$m1))
我找到了this topic,但对我和现在来说太难了。
您可以只使用 lapply
循环变量。
myTests <- lapply(data[-length(data)], function(x) chisq.test(table(x, data$m1)))
这个 return 是一个命名列表,changin 变量作为每个列表项的名称。
names(myTests)
[1] "v1.1" "v1.2" "v1.3" "v1.4" "v1.5"
然后使用 myTests[[1]]
或 myTests[["v1.1"]]
访问每个。这些return
Pearson's Chi-squared test with Yates' continuity correction
data: table(x, data$m1)
X-squared = 0, df = 1, p-value = 1
然后,要从各个测试中提取组件,请使用 names(myTests[[1]]
和 str(myTests[[1]])
检查内容。例如,myTests[[1]]$p.value
将从第一个测试中提取 p.value,而 unlist(sapply(myTests, "[", "p.value"))
将 return 一个具有所有测试的 p 值的命名向量。
我想使用卡方检验数据集。怎么做,使用 loop for 或 sapply。
这是一组示例数据:
n<-40
set.seed(1)
data <- data.frame(v1.1=sample(c('0','1'),n,replace=T),v1.2=sample(c('0','1'),n,replace=T),v1.3=sample(c('0','1'),n,replace=T),v1.4=sample(c('0','1'),n,replace=T),v1.5=sample(c('0','1'),n,replace=T),m1=sample(c('1','2'),n,replace=T))
我想用变量 m1 测试所有名为 v1.x 的变量。就这些了。
我希望避免这样的情况:
chisq.test(table(data$v1.1,data$m1))
chisq.test(table(data$v1.2,data$m1))
chisq.test(table(data$v1.3,data$m1))
chisq.test(table(data$v1.4,data$m1))
chisq.test(table(data$v1.5,data$m1))
我找到了this topic,但对我和现在来说太难了。
您可以只使用 lapply
循环变量。
myTests <- lapply(data[-length(data)], function(x) chisq.test(table(x, data$m1)))
这个 return 是一个命名列表,changin 变量作为每个列表项的名称。
names(myTests)
[1] "v1.1" "v1.2" "v1.3" "v1.4" "v1.5"
然后使用 myTests[[1]]
或 myTests[["v1.1"]]
访问每个。这些return
Pearson's Chi-squared test with Yates' continuity correction
data: table(x, data$m1)
X-squared = 0, df = 1, p-value = 1
然后,要从各个测试中提取组件,请使用 names(myTests[[1]]
和 str(myTests[[1]])
检查内容。例如,myTests[[1]]$p.value
将从第一个测试中提取 p.value,而 unlist(sapply(myTests, "[", "p.value"))
将 return 一个具有所有测试的 p 值的命名向量。