Dear list,

I would like to calculate Sobol indices (first-order and total indices) with 
the sobol2002 function in the 'sensitivity' package for a hydrologic model. The 
input of my model consists of a parameter vector, the output of a single value 
(agreement between observed and simulated stream flow). I cannot run my model 
for a parameter matrix (each line = parameter vector); therefore, I need a loop 
over lines.
However, sobol2002 does not seem to work for loops (see simplified code below).

#parameter dataframes
library(sensitivity)
n <- 10
X1 <- data.frame(matrix(runif(2 * n), nrow = n))
X2 <- data.frame(matrix(runif(2 * n), nrow = n))

#Function without loop
FUN1 <- function(X)
    {
        OUT <- X[,1]   
        OUT
    }
        
x_FUN1 <- sobol2002(model = FUN1, X1 = X1, X2 = X2, nboot = 100) ##works! 

#Function with loop
FUN2 <- function(X)
    {
        OUT <- rep(NA, n)
        for (i in 1:n) {OUT[i] <- X[i,1]}    
        OUT
    }
        
x_FUN2 <- sobol2002(model = FUN2, X1 = X1, X2 = X2, nboot = 100) ##fails! 

I am grateful for any hints, how I can use sobol2002 for a model based on a 
parameter vectors!
Regards,
Haeru



      
        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to