0

我试图限制回归,只使用变量 everevac==1 的数据点。我想出了一种方法来做到这一点,但我想知道是否有更好的方法。

在 STATA 中,我会运行这样的东西:

reg outcome y2006 age black male etc if everevac==1, cluster(persid)

我为R想出了这个:

fit <- ols(formula = outcome[everevac==1] ~ y2006[everevac==1] + 
             age[everevac==1] + black[everevac==1] + 
             male[everevac==1] + hsgrad[everevac==1] + 
             hsgrad[everevac==1] + someco[everevac==1] + 
             ba[everevac==1] + postgrad[everevac==1], x=TRUE, y=TRUE, data = ps2_new)
robcov(fit, cluster = ps2_new$persid[ps2_new$everevac==1])

请注意,我只是限制了所有变量,使其成为 var[everevac==1] ..这甚至在做我认为它正在做的事情吗?有更好的方法吗?我尝试使用这样的“if”语句:

if(everevac==1){ <lm function above, taking out the [everevac==1] on each variable> }

但它没有用。

4

2 回答 2

1

将此参数添加到ols调用中,然后不要通过外部值引用集群 ID,而是通过将在fit仅具有subset-ed 数据的 -object 的上下文中评估的名称:

... , subset = everevac==1)

fit <- ols(formula = outcome ~ y2006 + 
                age + black + 
                male + 
                hsgrad + someco + 
                ba + postgrad,
            x=TRUE, y=TRUE, 
            data = ps2_new, subset = everevac==1)
robcov(fit, cluster = persid)

library(rms)顺便说一句,包含在代码块中被认为是礼貌的。

于 2013-10-21T18:45:54.927 回答
0

简单地索引数据框就足够了

fit <- ols(formula = outcome ~ y2006 + age + black + male + hsgrad + 
             hsgrad + someco + ba + postgrad, x=TRUE, y=TRUE, 
             data = ps2_new[ps2_new$everevac==1,])
于 2013-10-21T14:46:21.377 回答