0

さまざまなモデル (10 としましょう) を推定し、各推定から特定のパラメーター値を stata 付きのベクトルに保存する方法を探しています。

私はR-guyの方が多く、ここではR-コードを使用した非常に単純な作業例です

n1 <- 100
n2 <- 10
group <- rep(1:10,each=n1)
data <- as.data.frame(cbind(rnorm(n1*n2,0,1),rnorm(n1*n2,0,1),group))
dimnames(data)[[2]] <- c("y","x","group")
val <- names(table(group))
estimates <- vector(mode="numeric",length=length(val))

for( i in 1:length(val)){
j <- which(data$group==val[i])
estimates[i] <- coef(lm(y[j] ~ x[j], data=data))[2]
}

あるいは

library(nlme)
mod1 <- lmList(y~x | group, data=data)
coef(mod1)[,2]

はい、残念ながら私はstataを使用する必要があります:-(

4

2 に答える 2

3

あなたの究極の目的は何ですか?Stata と R のパラダイムは異なるため、最終的な目標を知っておくと役立ちます。RI ではベクトルの観点から考える傾向がありますが、Stata ではそうではありません (ベクトルは実際には Stata には存在しません)。テーブルが必要な場合は、estoutSSC ( ssc install estout) のパッケージをお勧めします。係数自体が目的である場合は、 をお勧めしstatsbyます。

clear
version 11.2
set seed 2001

* generate your data
set obs 1000
generate y = rnormal()
generate x = rnormal()
generate group = 1 + floor((_n - 1) / 100)

* if you want a table
* you'll need the estout package from SSC (ssc install estout)
eststo clear
forvalues i = 1/10 {
    eststo : regress y x if (group == `i')
}
esttab

* if you just the coefficients
statsby, by(group) clear : regress y x
list

と の両方esttabstatsby多くのオプションがあるため、ヘルプ ファイルを確認してください。


更新: グループ (ここでは会社) ごとの時系列ベータが必要なようです。経済面では、ローリング リグレッションが必要になると思いますが、このフレームワークから始めることができます。

clear
version 11.2
set seed 2001

* generate your data
set obs 1000
generate y = rnormal()
generate x = rnormal()
generate firm = 1 + floor((_n - 1) / 100)
generate year = 1 + mod((_n - 1), 100)

* regress by firm
xtset firm year
statsby _b, by(firm) saving(temp, replace) : regress y x

* then merge back
merge m:1 firm using temp
list in 1/20
于 2013-01-17T20:38:49.807 に答える
1

これには、レベル 1 の回帰が企業レベルの回帰であり、レベル 2 の回帰がグループの勾配間のばらつきを説明する回帰であるマルチレベル モデルが必要です。あなたがやっていることは非常に面倒で、とにかく正しい標準誤差を与えません. これは を介し​​て最も明確に実装されてgllammいますが、手をひねってxtmixedそれを行うこともできます。

于 2013-01-18T12:47:13.470 に答える