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

emmeans中joint_tests无法识别make.tran()转换的协变量问题

问题:使用make.tran()转换协变量后joint_tests无法识别该变量

使用emmeans 1.8.8版本,遇到如下问题:

重现代码与现象

首先准备数据并定义转换函数:

set.seed(83)
library(emmeans)
dummy <- expand.grid(
  covar  = runif(72, min = 0, max = 1),
  resp = runif(72, min = 0, max = 2),
  site = c("a", "b", "c", "d", "e", "g"),
  C = 1:4,
  R = c("i", "j", "k")
)

as.tran <- make.tran("asin.sqrt")

构建模型并执行joint_tests:

mod <- with(as.tran, lm(sqrt(resp) ~ site  +  C * R * linkfun(covar), data = dummy))

执行结果中完全没有出现涉及covar的行:

model term df1    df2 F.ratio p.value
 site         5 373231   0.000  1.0000
 C            1 373231   0.000  1.0000
 R            2 373231   0.000  1.0000
 C:R          2 373231   0.000  1.0000

对比测试

  1. 交换响应变量与协变量
    将转换后的协变量作为响应变量,原响应变量作为预测变量:
mod2 <- with(as.tran, lm( linkfun(covar) ~ site  +  C * R * sqrt(resp), data = dummy))
joint_tests(mod2)

此时joint_tests能输出完整的ANCOVA结果,包含resp相关项:

model term df1    df2 F.ratio p.value
 site         5 373231   0.000  1.0000
 C            1 373231   0.000  1.0000
 R            2 373231   0.000  1.0000
 resp         1 373231   0.000  1.0000
 C:R          2 373231   0.000  1.0000
 C:resp       1 373231   0.000  1.0000
 R:resp       2 373231   0.000  1.0000
 C:R:resp     2 373231   0.000  1.0000
  1. 直接使用转换函数而非make.tran()
    不通过make.tran(),直接在模型中用asin()转换协变量:
mod3 <- lm( sqrt(resp) ~ site  +  C * R * asin(covar), data = dummy)

joint_tests(mod3)

此时joint_tests能正常识别covar及其交互项:

model term df1    df2 F.ratio p.value
 site         5 373231   0.000  1.0000
 C            1 373231   0.000  1.0000
 R            2 373231   0.000  1.0000
 covar        1 373231   0.000  1.0000
 C:R          2 373231   0.000  1.0000
 C:covar      1 373231   0.000  1.0000
 R:covar      2 373231   0.000  1.0000
 C:R:covar    2 373231   0.000  1.0000
  1. 使用make.tran("asin")转换协变量
    即便改用asin类型的转换,结果依然无法识别covar:
a.tran = make.tran("asin")

mod4 <- with(a.tran, lm(sqrt(resp) ~ site  +  C * R * linkfun(covar), data = dummy))

joint_tests(mod4)

输出结果:

model term df1    df2 F.ratio p.value
 site         5 373231   0.000  1.0000
 C            1 373231   0.000  1.0000
 R            2 373231   0.000  1.0000
 C:R          2 373231   0.000  1.0000

需求

寻求解决该问题的方法,让joint_tests能识别通过make.tran()转换后的协变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:36:16