2013-10-21 19 views
0

我試圖限制一個迴歸,只使用數據點的地方變量everevac == 1 ..我想出了一種方法來做到這一點,但我想知道是否有更好的方法。限制一個迴歸和聚類在R

在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

簡單的索引數據幀應該是足夠

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

順便說一句,你有你的公式 – nico

+0

在hsgrad兩次我剛得到這個錯誤:「錯誤model.frame.default(公式=結果〜y2006 +年齡+黑色+: 可變長度不同(發現「y2006 ')「... ...單獨限制,我沒有得到這個錯誤,同樣,感謝hsgrad –

+0

的正面評價,所有這些(y2006,age,black等)都是ps2_new數據框中的列? – nico

1

這個參數添加到ols電話,然後不要被外在價值是指集羣ID,而是通過將隨後在被評估的名字所述fit -object僅具有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)