2
使用不同的數據源,我編寫了一個小函數,該函數創建一個標準錯誤,t統計量和標準錯誤表,該表根據組後變量「cluster」線性迴歸模型。代碼如下所示在模型中使用{plm}中的所有變量R
cl1 <- function(modl,clust) {
# model is the regression model
# clust is the clustervariable
# id is a unique identifier in ids
library(plm)
library(lmtest)
# Get Formula
form <- formula(modl$call)
# Get Data frame
dat <- eval(modl$call$data)
dat$row <- rownames(dat)
dat$id <- ave(dat$row, dat[[deparse(substitute(clust))]], FUN =seq_along)
pdat <- pdata.frame(dat,
index=c("id", deparse(substitute(clust)))
, drop.index= F, row.names= T)
# # Regression
reg <- plm(form, data=pdat, model="pooling")
# # Adjustments
G <- length(unique(dat[, deparse(substitute(clust))]))
N <- length(dat[,deparse(substitute(clust))])
# # Resid degrees of freedom, adjusted
dfa <- (G/(G-1))*(N-1)/reg$df.residual
d.vcov <- dfa* vcovHC(reg, type="HC0", cluster="group", adjust=T)
table <- coeftest(reg, vcov=d.vcov)
# # Output: se, t-stat and p-val
cl1out <- data.frame(table[, 2:4])
names(cl1out) <- c("se", "tstat", "pval")
# # Cluster VCE
return(cl1out)
}
對於像reg1 <- lm (y ~ x1 + x2 , data= df)
迴歸,調用函數cl1(reg1, cluster)
會工作得很好。
不過,如果我使用像reg2 <- lm(y ~ . , data=df)
的模型,我會得到錯誤信息:
Error in terms.formula(object) : '.' in formula and no 'data' argument
一些測試,我猜,我不能使用後「」爲{plm}發信號「在數據幀中使用所有變量」。有什麼辦法可以用{plm}來做到這一點?否則,有關如何以不使用{plm}並接受線性模型的所有可能規格的方式來改進我的函數的任何想法?
您已在此成立,'Y〜.'會的方式(嘗試......)包括除「y」之外的所有'pdat'列,但包括'row','id'和'clust'。你確定這是你想要做的嗎? – jlhoward 2014-10-03 17:52:15
哦,謝謝!試圖解決我的「。」錯誤我沒有看到這個! – 2014-10-06 07:46:52