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

使用inferences进行自助法时,avg_comparisons参数触发断言错误的咨询

问题解析与解决方案

错误原因

这个断言错误的核心是数据类型不匹配:当你在avg_comparisons中指定transform='exp'后,返回结果的transform元属性会被存储为列表格式,但inferences函数在处理自助法(bootstrapping)时,要求transform参数必须是'exp'/'ln'这类原子标量,或是一个函数,不接受列表类型,因此触发了参数检查失败。

解决方法

有两种可靠的实现方式:

方法1:将transform移至inferences中(推荐)

遵循包的设计逻辑,让avg_comparisons先计算未转换的对数比率统计量,再由inferences在自助抽样的全过程中应用指数转换,代码如下:

library(tidyverse)
library(marginaleffects)

set.seed(0)
n <- 500
trt <- rep(0:1, each=500)
x <- rnorm(n)
y <- 2*x + 1 + 0.5*trt + rnorm(n, 0, 0.3)

d <- data.frame(x, trt, y)
fit <- lm(y~trt + x, data=d)

avg_comparisons(
  fit,
  variables = 'trt',
  comparison = 'lnratioavg'
) %>% 
  inferences(method='boot', transform='exp')

方法2:修正结果的transform属性

如果必须在avg_comparisons中提前应用转换,可以手动将结果的transform属性从列表改为原子标量'exp',再传入inferences:

library(tidyverse)
library(marginaleffects)

set.seed(0)
n <- 500
trt <- rep(0:1, each=500)
x <- rnorm(n)
y <- 2*x + 1 + 0.5*trt + rnorm(n, 0, 0.3)

d <- data.frame(x, trt, y)
fit <- lm(y~trt + x, data=d)

# 先计算带转换的结果
result <- avg_comparisons(
  fit,
  variables = 'trt',
  comparison = 'lnratioavg',
  transform = 'exp'
)

# 修正transform属性类型
attr(result, 'transform') <- 'exp'

# 执行自助法推断
inferences(result, method='boot')

注意:方法1更符合自助法的统计逻辑——对每个自助样本先计算原始统计量再转换,结果的可靠性更高;方法2仅作为特殊场景下的临时修复方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 19:46:12