我试图限制回归,只使用变量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> }
但它不起作用。
答案 0 :(得分:1)
将此参数添加到ols
调用,然后不要通过外部值引用群集ID,而是通过将在fit
- 对象的上下文中评估的名称引用只有subset
- ed数据:
... , 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)
被认为是有礼貌的。
答案 1 :(得分: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,])