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

使用rtip包测试广义洛伦兹曲线相等性时遇维度错误求助

解决rtip包testGL函数的维度错误问题

错误Error in dataset1[, hhcsw] : incorrect number of dimensions.的核心原因是:你的模拟数据缺少testGL函数必需的**家庭权重(hhcsw)和家庭规模(hhsize)**相关列,且当你设置hhcsw = NULL时,函数内部仍会尝试使用默认列名(如db090,rtip包的默认权重列名),而你的数据集没有该列,导致索引维度错误。

解决方案1:手动构造符合要求的数据集

直接给模拟数据添加权重和家庭规模列(无实际抽样权重时,用全1值即可),并在调用函数时明确指定列名:

library(rtip)
# 构造包含收入、权重、家庭规模的模拟数据
X <- data.frame(ipuc = rchisq(20, 5), 
                weight = rep(1, 20),  # 全1权重表示每个观测权重相等
                hh_size = rep(1, 20)) # 假设每个家庭仅1人
Y <- data.frame(ipuc = rchisq(20, 5), 
                weight = rep(1, 20), 
                hh_size = rep(1, 20))

# 调用testGL并指定各列名称
testGL(X, Y, 
       ipuc = "ipuc", 
       hhcsw = "weight", 
       hhsize = "hh_size", 
       generalized = TRUE, 
       alpha = 0.05)

解决方案2:贴合手册示例用setupDataset处理

构造包含rtip默认列名和分组信息的模拟数据,再用setupDataset拆分,完全匹配手册示例的数据集结构:

library(rtip)
# 构造符合setupDataset要求的模拟数据
sim_data <- data.frame(
  ipuc = c(rchisq(20, 5), rchisq(20, 5)),
  db090 = rep(1, 40),  # rtip默认权重列名
  db040 = rep(1, 40),  # rtip默认家庭规模列名
  country = rep("SIM", 40),  # 自定义标识
  region = rep(c("Group1", "Group2"), each = 20)  # 分组用于拆分数据集
)

# 拆分出两个对比数据集
X <- setupDataset(sim_data, country = "SIM", region = "Group1")
Y <- setupDataset(sim_data, country = "SIM", region = "Group2")

# 调用testGL,无需额外指定列名(使用默认值)
testGL(X, Y, generalized = TRUE, alpha = 0.05)

关键说明

testGL函数在计算广义洛伦兹曲线时,必须依赖权重和家庭规模信息来调整统计量。即使你没有实际的抽样权重或家庭规模数据,也需要提供全1的列来满足函数的输入要求,否则会因列缺失导致维度错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:33:30