使用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
相关产品推荐
相关产品推荐

