3

最終的に を使用した結果をプロットしたいシミュレーション研究がありggplot2ます。ただし、これにはデータが長い形式である必要があり、一種の要因計画を自然に採用するシミュレーション研究を行う場合にはあまり便利ではありません。私の質問は、これにアプローチする方法に関するものです。

すべてを説明するためのダミーの例を次に示します。R複製の 2 つのサンプル サイズについて切片を含む場合と含まない場合の単純な線形回帰で、勾配の OLS 推定量を比較したいとします。これを使用して保存できます。

  • 配列R x 2 x 2( replications x estimators x sample sizes)
  • Replication変数、Sample sizeEstimatorおよびを含むデータ フレーム (ティブル)Value

R の配列とデータ フレームは次のとおりです。

library(tidyverse)
# Settings
R <- 10
est <- c("OLS1", "OLS2")
n <- c(50, 100)

# Initialize array
res <- array(NA, 
             dim = c(R, length(est), length(n)),
             dimnames = list(Replication = 1:R, 
                             Estimator = est,
                             Sample_size = n))

tibb <- as_tibble(expand.grid(Replication = 1:R, Sample_size = n, Estimator = est)) %>% 
  mutate(Value = NA)

これらを値で埋めるために、シミュレーションの本体は次のとおりです。

for (i in seq_along(n)) {
  nn <- n[i]
  x <- rnorm(nn)
  for (j in 1:R) {
    y <- 1 * x + rnorm(nn)
    mod1 <- lm(y ~ 0 + x)
    mod2 <- lm(y ~ 1 + x)
    res[j, 1, i] <- mod1$coefficients[1]
    res[j, 2, i] <- mod2$coefficients[2]

    tibb[tibb$Replication == j & tibb$Sample_size == nn & tibb$Estimator == "OLS1", "Value"] <- mod1$coefficients[1]
    tibb[tibb$Replication == j & tibb$Sample_size == nn & tibb$Estimator == "OLS2", "Value"] <- mod2$coefficients[2]
  }
}

これで、tibbですぐにプロットする準備が整いましたggplot2。ただし、進行中の行の選択はかなり厄介です。一方、配列への入力は自然で直感的に感じられますが、プロットに適した形式に変換するには、さらに多くの作業が必要です。

では、これにどのようにアプローチするのが最善でしょうか? (また、実際のシミュレーションでは通常、ここで使用したものよりも多くの次元があることに注意してください。)これを行うための他のより良い方法はありますか?

4

1 に答える 1