如何使正态分布变量取决于 R 中的条目和时间?

How to make a normally distributed variable depend on entries and time in R?

我正在尝试生成横截面时间序列的数据集来估计不同模型的使用。 在这个数据集中,我有一个 ID 变量和一个时间变量。我正在尝试添加一个依赖于两个标识的正态分布变量。换句话说,如何在 R 中创建一个同时识别 ID 和时间的变量? 如果我的问题看起来不确定,请随时提出任何问题。 提前致谢。

df2 <- read.table(
text =
"Year,ID,H,
1,1,N(2.3),
2,1,N(2.3),
3,1,N(2.3),
1,2,N(0.1),
2,2,N(0.1),
3,2,N(0.1),
", sep = ",", header = TRUE)

假设数据框中的数据df看起来像

ID Time
1 1
1 2
1 3
1 4
2 1
2 2
2 3
2 4
3 1
3 2
3 3
3 4

您可以生成一个依赖于 ID 和时间的变量 y 作为分别依赖于 IDtime 的两个随机正态分布(产生另一个正态分布)的总和:

set.seed(42)


df = data.frame(
  ID   = rep(1:4,   each=3),
  time = rep(1:3,   times=4)
)

df$y = rnorm(nrow(df), mean=df$ID,   sd=1+0.1*df$ID) + 
       rnorm(nrow(df), mean=df$time, sd=0.05*df$time)

# Output:
   ID time         y
1   1    1  3.438611
2   1    2  2.350953
3   1    3  4.379443
4   1    4  5.823339
5   2    1  3.470909
6   2    2  3.607005
7   2    3  6.447756
8   2    4  6.150432
9   3    1  6.608619
10  3    2  4.740341
11  3    3  7.670543
12  3    4 10.215574

请注意,基础正态分布取决于 IDtime。这与上面的示例 table 形成对比,在该示例中它看起来完全取决于 ID —— 即每个 ID 产生一个独立于时间变量的正态分布。