倾向评分加权中的卡方警告

时间:2018-05-21 16:27:41

标签: r ps chi-squared gbm

我正在使用ps()包的倾向得分加权twang函数来均衡两组活跃的劳动力市场计划(ALMP)参与者,这些参与者在很多方面都有所不同。其中一个不同之处是教育水平,为了这个问题,我将其重新分为两个层次:一个是至少接受过小学教育的人的价值,另一个是那些最多接受小学教育的人。

当我将此变量包含为因子时:

 ALMP$Education_f2 = factor(ALMP$Education_f2, levels = c(„at.least.primary“, „at.most.primary“), ordered = TRUE)

R在Chi-squared approximation may be incorrect的迭代期间开始抱怨。

当我将教育变量包含为整数

ALMP$Education_int = as.integer(ALMP$Education_int)

R没有发出警告。

Griffin等人说here twang包可以处理分类变量:

  

无需在公式中指定交互项。那里   创造也没有必要 - 而且可能适得其反   指示符,或"虚拟编码,"变量来表示分类   协变量,只要将分类变量存储为因子   或按订购(有关详细信息,请参阅帮助(因子))。

如果这是真的,那么为什么R会抱怨?这是我应该担心的吗?

我还读到here,作为一般规则,如果任何类别的观察数少于5,则卡方投诉。这不是我的情况,因为如果我在教育和课程类型上运行(2x2)交叉表,则一个小组中参与者的最小份额为2810(占所有案例的8%)。

当然,我可以将教育变量保持为整数(0/1),但我问这个问题,因为如果可能的话,我想改进变量并将其包含在两个以上的级别中(例如:没有教育,小学,中学,大学),显然整数变量不再适用。

我在数据框中总共有大约35,000个观测值,并且使用的是3.4.2。 Windows 7 Professional(x64)上的R(x64)版本。

数据来自具有一些保密规则的公共注册管理机构数据库,所以很遗憾我无法分享,但我很乐意更详细地描述任何有助于澄清情况的功能。

非常感谢您提前。

1 个答案:

答案 0 :(得分:0)

我想我发现了这个问题。我正在使用R Studio,它与我是否在R Markdown或R Script中编写代码有关。

问题只发生在我将因子变量传递给R Markdown中的ps函数时,如下所示:

library(twang)
data("lalonde") 

lalonde$college = ifelse(lalonde$educ<13, 0, 1)
lalonde$college_f = factor(lalonde$college, ordered = TRUE)

ps.lalonde_f = ps(treat ~ age + college_f + black + hispan + nodegree + married + re74 + re75,
                  data = lalonde, 
                  n.tree = 1000,
                  interaction.depth = 2, 
                  shrinkage = 0.01,
                  perm.test.iters = 0,
                  stop.method = c("es.mean", "ks.max"),
                  estimand = "ATT",
                  verbose = FALSE)

当我将college_f参数替换为ps()函数中的数字college时,我不再收到卡方警告。另外,如果我只是将上面的代码传递给R脚本,则警告也不会出现。

(我正在使用R-Studio版本1.1.442。)