我尝试使用此代码创建余额表:
library(ebal)
library(matching)
mout <- MatchBalance(DV ~ someIVs, data=dataset)
balance.test <- baltest.collect(matchbal.out=mout, var.names=colnames(dataset)[-c(unnecessary_variables)], after=FALSE)
balance.test
bal.output <- round(balance.test[,c("mean.Tr","mean.Co","T pval","KS pval")],2)
stargazer(bal.output,title = "Balance Test on Olken Data", type = "text")
现在我已将此代码用于其他数据,并且工作正常。然而,这一次,我收到了有意义的&#34; mean .Tr&#34; (治疗的意思)和&#34; mean.Co&#34; (对照的平均值)但t检验和KS检验的p值报告为0。一些KS测试p值被报告为NA或(作为观察者输出它们)作为空白单元。
输出表如下所示:
Balance Test
mean.Tr mean.Co T pval KS pval
IV1 25.820 34.850 0 0
IV2 10.350 12.120 0 0
IV3 0.840 0.250 0
IV4 0.060 0.030 0.130
IV5 0.190 0.870 0
IV6 2,095.570 19,428.750 0 0
IV7 1,532.060 19,063.340 0 0
IV8 0.710 0.090 0
IV8 0.600 0.100 0
我知道上传一些样本数据是最容易的,但不幸的是,我不能用伪造的数据复制这个结果。因此,我的问题是,我的数据(或我的代码)中可能会导致此行为?
答案 0 :(得分:1)
因此经过大量的谷歌搜索后,我发现平衡测试中的0只是极低p值的结果。空白/ NA是KS测试不适用于虚拟变量的结果(我想我应该已经明确空白只显示虚拟变量)。
不幸的是,我仍然不明白为什么KS测试不能为二元变量产生有意义的p值。二元变量也有分布,不是吗?如果一个二进制变量的分布与另一个二进制变量的分布相匹配,为什么不能进行KS测试呢?
即使我已经回答了我自己的问题,我仍然会对这个问题的回答表示赞赏。