Как я могу индексировать в этой матрице повторяющиеся переменные? - PullRequest
0 голосов
/ 01 мая 2019

Я работаю с оценками параметров из моделирования.

n - коэффициент с 10 уровнями (от 36 до 144, по 12), n = размеры выборки. Симуляция может иметь 1 из 3 вариантов выживания (phi.set), и я поместил эти параметры в вектор с именем s. Симуляция может иметь 1 из 3 вариантов вероятности захвата (p.set), и я поместил эти параметры в вектор с именем p.

phi и p - оценки параметров (числовые), основанные на phi.set и p.set.

Моя симуляция делает 100 оценок (для phi и p, каждая) для каждой уникальной комбинации n, phi.set и p.set. Я хочу поместить каждую оценку в строку, соответствующую ее n, phi.set и p.set.

Я изо всех сил пытаюсь выяснить, как индексировать пустую матрицу, которую я сделал, чтобы результаты моделирования могли быть помещены в соответствующие строки.

nboot=100 #specify number of bootstraps to run
n.s<-seq(36,150,12)
p <- c(.75, 0.9, 1)
s <- c(0.6, 0.65, 0.7)
phi.matrix <- matrix(NA, nrow=length(n.s)*nboot*length(p)*length(s), 
ncol=5) #a matrix to hold results (all values set to NA), col1=n, col2=phi 
estimate col3=p estimate, col4=phi setting, col5=p setting.


for (g in 1:length(n.s)){
  for (f in 1:nboot) { 
    for(d in 1:length(s)){
      for(e in 1:length(p)){
        S = matrix(s[d],nrow=relYears,ncol=recYears) # survival after the first occasion
        p = matrix(p[e],nrow=relYears,ncol=recYears) #recovery after the first occasion

#dont worry about the simulation itself... i've abbreviated it because it 
isn't important to my question!

        simmod <- mark(sim.proc, sim.ddl, model.parameters = 
list(Phi=Phi.sim, p=p.sim))
        Phi.estimates=get.real(simmod,"Phi")
        bootphi<-Phi.estimates[[1]]$pim[1,1]

        p.estimates=get.real(simmod,"p")
        bootp<-p.estimates[[1]]$pim[1,1]

  #these indices with the blank row spot is where I need help!!
        phi.matrix[,1]<-n.s[g] 
        phi.matrix[,2]<-bootphi
        phi.matrix[,3]<-bootp 
        phi.matrix[,4]<-s[d]     
        phi.matrix[,5]<-p[e] 



      }
    }
  }
}

Начало матрицы, которую я пытаюсь завершить, должно выглядеть следующим образом (хотя я добавил сюда столбец «n.boot» для справки:

    n   phi   p      phi.set   p.set   n.boot
1   36   0.58  0.72    0.6       0.75  1
2   36   0.53  0.72    0.6       0.9   1
3   36   0.59  0.75    0.6       1.0   1
4   36   0.58  0.71    0.65      0.75  1
5   36   0.57  0.71    0.65      0.9   1
6   36   0.57  0.72    0.65      1.0   1
7   36   0.58  0.73    0.7       0.75  1
8   36   0.58  0.74    0.7       0.9   1
9   36   0.54  0.72    0.7       1.0   1
10  36   0.52  0.75    0.6       0.75  2
11  36   0.58  0.76    0.6       0.9   2
12  36   0.59  0.77    0.65      1.0   2
13  36   0.6   0.72    0.65      0.75  2
14  36   0.61  0.71    0.65      0.9   2
15  36   0.58  0.74    0.6       1.0   2

...
n будет идти от 36 до 144 к 12, и каждый уникальный n будет иметь количество итераций, указанное в nboot (т.е. 1000 итераций).

Я хочу иметь индекс, который будет помещать каждую вновь смоделированную оценку в строку, соответствующую настройке n, phi и настройке p, которая ее вырабатывала.

Спасибо за ваше время!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...