在R中编程灵敏度分析:改变1个参数(列),保持其他参数不变。更好的方法?

在R中编程灵敏度分析:改变1个参数(列),保持其他参数不变。更好的方法?,r,dataframe,combinations,R,Dataframe,Combinations,我想测试计算对4个参数值的敏感性。为此,我希望一次改变一个参数——即,改变变量1,将变量2-4保持在“默认”值(例如,1)。我认为在data.frame()中组织这些值是一种简单的方法,其中每列对应一个不同的变量,每行对应一组应该进行计算的参数。然后,我将遍历数据帧的每一行,根据该行中的参数值计算函数 这似乎应该是一件简单的事情,但我找不到一个快速的方法 问题可能是我编写敏感性分析程序的总体方法,但我想不出一个好的、简单的方法来编写前面提到的data.frame 生成data.frame的我的代

我想测试计算对4个参数值的敏感性。为此,我希望一次改变一个参数——即,改变变量1,将变量2-4保持在“默认”值(例如,1)。我认为在data.frame()中组织这些值是一种简单的方法,其中每列对应一个不同的变量,每行对应一组应该进行计算的参数。然后,我将遍历数据帧的每一行,根据该行中的参数值计算函数

这似乎应该是一件简单的事情,但我找不到一个快速的方法

问题可能是我编写敏感性分析程序的总体方法,但我想不出一个好的、简单的方法来编写前面提到的data.frame

生成data.frame的我的代码:

Adj_vals <- c(seq(0, 1, by=0.1), seq(1.1, 2, by=0.1)) #a series of values for 3 of the parameters to use
A_Adj_vals <- 10^(seq(1,14,0.5)) #a series of values for another one of the parameters to use
n1 <- length(Adj_vals)
n2 <- length(A_Adj_vals)

data.frame(
    "Dg_Adj"=c(Adj_vals, rep(1, n1*2+n2)),  #this parameter's default is 1
    "Df_Adj"=c(rep(1, n1), Adj_vals, rep(1, n1+n2)), #this parameter's default is 1
    "sd_Adj"=c(rep(1, n1*2), 0.01, Adj_vals[-1], rep(1, n2)), #This parameter has  default of 1, but unlike the others using Adj_vals, it can only take on values >0
    "A"=c(rep(1E7, n1*3), A_Adj_vals) #this parameter's default is 10 million
)

Adj_vals如果这样做更好的话,这是相当有争议的,但另一种方法是遵循以下模式:


defaults<-data.frame(a=1,b=1,c=1,d=10000000)
merge(defaults[c("b","c","d")],data.frame(a=c(seq(0, 1, by=0.1), seq(1.1, 2, by=0.1))))


默认值