McCrary测试:密度估计值为负

时间:2019-04-01 18:29:02

标签: r rdd

我在R中使用rdd软件包:

https://cran.r-project.org/web/packages/rdd/

我正在尝试运行McCrary测试,令我惊讶的是,该功能无法计算测试统计信息。我打开了函数DCdensity的主体,并一点一点地应用了代码以发现错误。问题出现在这里

 dist <- cmp - cutpoint
  w <- 1 - abs(dist/bw)
  w <- ifelse(w > 0, w * (cmp < cutpoint), 0)
  w <- (w/sum(w)) * jp
  fhatl <- predict(lm(cval ~ dist, weights = w), newdata = data.frame(dist = 0))[[1]]
  w <- 1 - abs(dist/bw)
  w <- ifelse(w > 0, w * (cmp >= cutpoint), 0)
  w <- (w/sum(w)) * jp
  fhatr <- predict(lm(cval ~ dist, weights = w), newdata = data.frame(dist = 0))[[1]]
  thetahat <- log(fhatr) - log(fhatl)
  sethetahat <- sqrt((1/(rn * bw)) * (24/5) * ((1/fhatr) + 
                                                 (1/fhatl)))
  z <- thetahat/sethetahat
  p <- 2 * pnorm(abs(z), lower.tail = FALSE)

基本上,fhatl是接近零的负值,并且未定义log函数。从那里开始,什么都无法计算。

问题似乎是该函数选择的带宽为0.22,这是非常广泛的。当带宽低于0.14(含)时,我们在阈值的左侧获得对运行变量的密度估计的正估计。在所有情况下,p值都非常高,因此结果对选择低于0.14的带宽不敏感。

但是,我对这种情况感到有些疑惑,我仅仅因为...而选择其他带宽让我感到不舒服。

我还想知道这是否表明某些退化的数据生成处理会带来一些问题,而我在这里找不到。

您将如何处理这种情况?

0 个答案:

没有答案