无法获取所有组合的数据

Can't get data for all combinations

我有 31 种可能的平均值场景,我想为每个场景生成样本,但我没有得到我想要的那么多。 这是场景

> scenari<-s*shift;scenari 
   Var1 Var2 Var3 Var4 Var5
2   1.5  0.0  0.0  0.0  0.0
3   0.0  1.5  0.0  0.0  0.0
4   1.5  1.5  0.0  0.0  0.0
5   0.0  0.0  1.5  0.0  0.0
6   1.5  0.0  1.5  0.0  0.0
7   0.0  1.5  1.5  0.0  0.0
8   1.5  1.5  1.5  0.0  0.0
9   0.0  0.0  0.0  1.5  0.0
10  1.5  0.0  0.0  1.5  0.0
11  0.0  1.5  0.0  1.5  0.0
12  1.5  1.5  0.0  1.5  0.0
13  0.0  0.0  1.5  1.5  0.0
14  1.5  0.0  1.5  1.5  0.0
15  0.0  1.5  1.5  1.5  0.0
16  1.5  1.5  1.5  1.5  0.0
17  0.0  0.0  0.0  0.0  1.5
18  1.5  0.0  0.0  0.0  1.5
19  0.0  1.5  0.0  0.0  1.5
20  1.5  1.5  0.0  0.0  1.5
21  0.0  0.0  1.5  0.0  1.5
22  1.5  0.0  1.5  0.0  1.5
23  0.0  1.5  1.5  0.0  1.5
24  1.5  1.5  1.5  0.0  1.5
25  0.0  0.0  0.0  1.5  1.5
26  1.5  0.0  0.0  1.5  1.5
27  0.0  1.5  0.0  1.5  1.5
28  1.5  1.5  0.0  1.5  1.5
29  0.0  0.0  1.5  1.5  1.5
30  1.5  0.0  1.5  1.5  1.5
31  0.0  1.5  1.5  1.5  1.5
32  1.5  1.5  1.5  1.5  1.5

这是函数

genereting_fuction<-function(n){
  for (i in 1:length(scenari)){
      X1=rnorm(n)+scenari[i,1]
      X4=rnorm(n)+scenari[i,4]
      X2=X1*p12+std_e2*rnorm(n)+scenari[i,2]
      X3=X1*p13+X4*p43+std_e3*rnorm(n)+scenari[i,3]
      X5=X2*p25+X3*p35+std_e5*rnorm(n)+scenari[i,5]
     sample=cbind(X1,X2,X3,X4,X5)
     return(sample)
  }
}
genereting_fuction(10)

我应该得到 31 个大小为 10X5 的样本,但我只得到一个样本

您也在 return 上应用 for 循环,最终仅返回与最后一个场景对应的样本。

试试这个:

genereting_fuction<-function(n){
  sample <- list()
  for (i in 1:nrow(scenari)){
      X1=rnorm(n)+scenari[i,1]
      X4=rnorm(n)+scenari[i,4]
      X2=X1*p12+std_e2*rnorm(n)+scenari[i,2]
      X3=X1*p13+X4*p43+std_e3*rnorm(n)+scenari[i,3]
      X5=X2*p25+X3*p35+std_e5*rnorm(n)+scenari[i,5]
     sample[[i]]=cbind(X1,X2,X3,X4,X5)
  }
  sample
}

输出将是一个 list,它的第 i 个元素将是对应于第 i 个场景的样本。