You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pairwise t检验时出现0×0矩阵错误的技术求助

解决pollute变量事后检验出现“0×0矩阵”错误的方案

我尝试对pollute变量的三个水平(编码1、2、3)做事后检验,但运行代码时出现“0×0矩阵”错误。

错误代码

p.none <- (d$pollute = 1)
p.i <- (d$pollute = 2)
p.m <- (d$pollute = 3)
pairwise.t.test(p.none, p.i, p.adj = "none")
pairwise.t.test(p.none, p.m, p.adj = "none")

错误原因

  • 赋值符号误用:代码里用=做比较,这是赋值操作,会把整个d$pollute列强制改成对应数值,而非筛选符合条件的行。逻辑判断应该用==。
  • 函数用法错误:pairwise.t.test不需要手动拆分分组,它的第一个参数是要检验的响应变量(比如density),第二个参数是分组变量(即pollute),直接传入就能自动完成所有两两比较。

正确代码

推荐方法:直接调用pairwise.t.test

假设要检验的响应变量是density,一行代码就能完成所有两两比较:

pairwise.t.test(d$density, d$pollute, p.adj = "none")

如果要检验light变量,把d$density替换成d$light即可。

备选方法:手动拆分分组(适合理解逻辑)

一定要手动拆分的话,先正确筛选响应变量的子集,再做t检验:

# 筛选各pollute水平对应的density值
p1_density <- d$density[d$pollute == 1]
p2_density <- d$density[d$pollute == 2]
p3_density <- d$density[d$pollute == 3]

# 两两t检验
t.test(p1_density, p2_density)
t.test(p1_density, p3_density)
t.test(p2_density, p3_density)

注意这种方式需要自己处理p值校正,不如前者高效。

数据集d的dput输出

structure(list(tank.id = 1:60, condition = c("hot_species1", 
"cool_species1", "cool_species2", "cool_species1", "hot_species1", 
"hot_species2", "cool_species2", "hot_species1", "cool_species2", 
"cool_species1", "hot_species2", "hot_species1", "hot_species1", 
"hot_species1", "cool_species1", "cool_species2", "cool_species2", 
"cool_species2", "cool_species1", "hot_species2", "cool_species2", 
"cool_species2", "cool_species1", "cool_species1", "hot_species2", 
"cool_species1", "hot_species2", "hot_species2", "cool_species2", 
"hot_species2", "cool_species2", "hot_species2", "cool_species1", 
"hot_species1", "hot_species1", "cool_species1", "hot_species1", 
"hot_species2", "hot_species1", "hot_species1", "hot_species1", 
"hot_species1", "hot_species2", "cool_species2", "hot_species2", 
"cool_species1", "cool_species1", "hot_species2", "hot_species2", 
"cool_species2", "cool_species2", "hot_species2", "cool_species1", 
"hot_species1", "cool_species2", "cool_species1", "cool_species2", 
"hot_species1", "cool_species1", "hot_species2"), pollute = c(2L, 
2L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 3L, 1L, 1L, 2L, 1L, 
2L, 1L, 2L, 3L, 1L, 2L, 3L, 2L, 2L, 3L, 3L, 1L, 2L, 1L, 1L, 1L, 
1L, 3L, 1L, 2L, 2L, 3L, 1L, 3L, 1L, 1L, 3L, 3L, 3L, 3L, 1L, 1L, 
2L, 3L, 1L, 2L, 2L, 3L, 2L, 1L, 3L, 1L, 3L), temp = c(2L, 1L, 
1L, 1L, 2L, 2L, 1L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 
1L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 
2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 2L, 2L, 1L, 
1L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 2L), species = c(1L, 1L, 
2L, 1L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 
1L, 2L, 2L, 2L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 
1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 
2L, 2L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 2L), light = c(1395L, 1347L, 
1408L, 1441L, 1371L, 1331L, 1418L, 1441L, 1407L, 1349L, 1392L, 
1365L, 1356L, 1465L, 1435L, 1420L, 1416L, 1364L, 1405L, 1423L, 
1411L, 1423L, 1380L, 1469L, 1421L, 1450L, 1412L, 1380L, 1407L, 
1416L, 1359L, 1363L, 1450L, 1377L, 1359L, 1412L, 1374L, 1459L, 
1371L, 1368L, 1397L, 1353L, 1404L, 1348L, 1395L, 1373L, 1380L, 
1440L, 1376L, 1400L, 1351L, 1348L, 1430L, 1432L, 1387L, 1374L, 
1388L, 1410L, 1460L, 1388L), density = c(218L, 257L, 227L, 251L, 
213L, 161L, 250L, 208L, 222L, 214L, 223L, 244L, 203L, 235L, 241L, 
255L, 260L, 210L, 284L, 242L, 252L, 324L, 230L, 229L, 191L, 314L, 
218L, 240L, 297L, 228L, 290L, 328L, 321L, 242L, 200L, 269L, 188L, 
199L, 244L, 196L, 234L, 128L, 252L, 239L, 250L, 284L, 209L, 305L, 
288L, 193L, 201L, 318L, 262L, 222L, 207L, 253L, 295L, 229L, 326L, 
162L)), class = "data.frame", row.names = c(NA, -60L))

内容的提问来源于stack exchange,提问作者Harmony Nolder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:50:21