0

关于四舍五入估算二进制变量的可靠方法的讨论正在进行中。尽管如此,由 Bernaards 及其同事(2007 年)开发的所谓的自适应舍入程序是目前最广泛接受的解决方案。

采用舍入过程涉及对二项分布的正态逼近。也就是说,根据以下公式得出的阈值,将二进制变量中的估算值分配为 0 或 1,其中 x 是估算二进制变量的平均值:

threshold <- mean(x) - qnorm(mean(x))*sqrt(mean(x)*(1-mean(x)))

据我所知,主要的插补 R 包(例如 Amelia 或 mouse)尚未包含有助于对二进制变量进行舍入的函数。考虑到他们的因变量是二进制编码的,这个缺点使得打算在逻辑回归分析中使用估算值的研究人员尤其困难。

因此,为上面的伯纳德公式编写一个 R 函数是有意义的:

bernaards <- function(x)
{
mean(x) - qnorm(mean(x))*sqrt(mean(x)*(1-mean(x)))
}

使用此公式,计算平均值为 0.623 的插补二进制变量的阈值要容易得多:

bernaards(.623)
[1] 0.4711302

在计算阈值之后,通常的下一步是对变量 x 中的估算值进行四舍五入。

我的问题是:如何扩展上述功能以包括该任务?

换句话说,可以在 R 中用三行代码完成上述所有操作:

threshold <- mean(x) - qnorm(mean(x))*sqrt(mean(x)*(1-mean(x)))
df$x[x > threshold] <- 1
df$x[x < threshold] <- 0

如果函数包含上述重新编码/舍入,那将是最好的,因为对每个二进制变量重复相同的过程会很耗时,尤其是在处理大型数据集时。有了这样一个函数,我们可以在插补后简单地运行一行额外的代码(如下所示),然后继续分析:

bernaards(dummy1, dummy2, dummy3)
4

0 回答 0