我正在使用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)版本。
数据来自具有一些保密规则的公共注册管理机构数据库,所以很遗憾我无法分享,但我很乐意更详细地描述任何有助于澄清情况的功能。
非常感谢您提前。
答案 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。)