2017-10-02 1 views
0

Je travaille sur une analyse de sensibilité basée sur certaines sorties d'un modèle. Disons que j'ai une matrice comme suit:extraire des valeurs de la matrice pour l'analyse de sensibilité

parameter_range <- matrix(c(1.61-(1.61*0.10),1.61,1.61+(1.61*0.10),   #parameter 1 
         20-(20*0.1),20,20+(20*0.1),       #parameter 2 
         -2.5-(2.5*0.1),-2.5,-2.5+(2.5*0.1),     #parameter 3 
         -1.007-(-1.007*0.1),-1.007,-1.007+(-1.007*0.1),  #parameter 4 
         4000-(4000*0.1),4000,4000+(4000*0.1)), nrow=3, ncol=5) #parameter 5 parameter 

>parameter_range 

     [,1] [,2] [,3] [,4] [,5] 
[1,] 1.449 18 -2.75 -0.9063 3600 
[2,] 1.610 20 -2.50 -1.0070 4000 
[3,] 1.771 22 -2.25 -1.1077 4400 

L'ensemble de données suppose que la position [1,] = valeur min (valeur moyenne 10%), [2] = valeur moyenne, [3,] = max valeur (valeur moyenne + 10%).

Je dois créer une boucle pour extraire chaque combinaison de paramètres possible autour des valeurs min et max. Ceci est 15 combinaisons de paramètres:

Première combinaison: 1,449 20 -2,50 -1,0070 4000

Deuxième combinaison: 1,610 20 -2,50 -1,0070 4000

Troisième combinaison: 1,771 20 -2,50 -1.0070 4000

combinaison quatrième: 1,610 18 -2,50 -1,0070 4000

... et ainsi de suite.

Merci!

+3

Pas clair ce que vous entendez – Sotos

Répondre

1

Quelque chose comme ceci:

library(dplyr) 

all_comb = parameter_range %>% 
    data.frame() %>% 
    expand.grid() %>% 
    arrange(X1) %>% 
    as.matrix() 

Résultat:

> head(all_comb, 10) 
     X1 X2 X3  X4 X5 
[1,] 1.449 18 -2.75 -0.9063 3600 
[2,] 1.449 20 -2.75 -0.9063 3600 
[3,] 1.449 22 -2.75 -0.9063 3600 
[4,] 1.449 18 -2.50 -0.9063 3600 
[5,] 1.449 20 -2.50 -0.9063 3600 
[6,] 1.449 22 -2.50 -0.9063 3600 
[7,] 1.449 18 -2.25 -0.9063 3600 
[8,] 1.449 20 -2.25 -0.9063 3600 
[9,] 1.449 22 -2.25 -0.9063 3600 
[10,] 1.449 18 -2.75 -1.0070 3600