Anesrake算法没有';我不能用零作为砝码

Anesrake算法没有';我不能用零作为砝码,r,R,我尝试使用anesrake软件包,但它不接受零权重,并给出错误消息: Error in while (range(weightvec)[2] > cap + 1e-04) { : missing value where TRUE/FALSE needed 示例代码: ipfdata<- read.csv("dummydata.csv", header = T) ipfdata$caseid <- 1:length(ipfdata$age) sex <- c(0.3

我尝试使用anesrake软件包,但它不接受零权重,并给出错误消息:

Error in while (range(weightvec)[2] > cap + 1e-04) { : 
  missing value where TRUE/FALSE needed
示例代码:

ipfdata<- read.csv("dummydata.csv", header = T)
ipfdata$caseid <- 1:length(ipfdata$age)
sex <- c(0.30, 0.70)
age <- c(0.2, 0.1, 0.05, 0.05, 0.05, 0.05, 0.3, 0.2)
ses <- c(0.20, 0.20, 0.0)
targets <- list(sex, age, ses)
names(targets) <- c("sex", "age", "ses")
outsave <- anesrake(targets, ipfdata, caseid = ipfdata$caseid, weightvec = NULL, cap = 10, verbose = TRUE, maxit = 50, choosemethod = "total", type = "nolim", pctlim = 0.0001, nlim=10, iterate = T, force1 = TRUE)

ipfdata尽管我联系了作者以解决此问题,但该软件包从未更新。唯一的解决方法是在耙之前删除变量设置为零的任何行


在上面给定的示例中,您必须删除任何具有第三个SES因子的行,然后将SES向量更改为
c(0.20,0.20)
,而不是
c(0.20,0.20,0.0)

看起来您已经将
weightvec
设置为空。这就是你所说的“权重为零”的意思吗?不,这只是算法的开始“猜测”。你也可以很容易地忽略它。我特别指的是
ses
向量c(0.20,0.20,0.0)中的最后一个权重,我不熟悉这里实现的算法,但只是简单地遍历代码,在某个点上
weightvec
中的各种值被设置为
NaN
,而且
范围
调用没有得到足够的保护。基于您前面的问题和这个问题,我对包中的代码印象不太好。上一个问题中提到的
eval(parse())
的使用尤其令人震惊。我会小心使用它。