我正在尝试对R中的数据框进行敏感性分析。对此我还很陌生,所以请帮忙。
我有一个由八个输入变量的函数定义的输出变量;这些是'B','L','S','X1','X2','X3','X4','X5','X6','X7','X8'
。我需要弄清楚八个变量中的哪个是“键”变量。
B
是正态分布的,其他变量具有统一的分布。 L
和S
的范围从0到1,以0.1为增量,X
变量的范围从1到4,以1为增量。
我设置了分位数功能;
q <- c("qnorm", "qunif", "qunif", "qunif", "qunif", "qunif", "qunif", "qunif", "qunif", "qunif", "qunif" )
q.arg<- list(list(mean = 12473.68, sd = 2870.919) ,list(min=0,max=1),list(min=0,max=1),
list(min=1,max=4),list(min=1,max=4),list(min=1,max=4),list(min=1,max=4),
list(min=1,max=4),list(min=1,max=4),list(min=1,max=4),list(min=1,max=4))
这是功能;
modelRun<-function(Input) {(Input[,1]) * (Input[,2]) * (Input[,3]) *
((Input[,4] + Input[,5] + Input[,6] + Input[,7] + Input[,8]) + (Input[,9])
+ (Input[,10]) + (Input[,11])) / 32 }
要考虑的因素
factors<-c('B','L','S','X1','X2','X3','X4','X5','X6','X7','X8')
现在运行敏感性分析
library(sensitivity)
test <- fast99(modelRun, factors, n=1000, q=q, q.arg=q.arg)
test
和输出
Call:
fast99(model = modelRun, factors = factors, n = 1000, q = q, q.arg = q.arg)
Model runs: 11000
Estimations of the indices:
first order total order
B 0.06066269 0.111336
L NaN NaN
S NaN NaN
X1 NaN NaN
X2 NaN NaN
X3 NaN NaN
X4 NaN NaN
X5 NaN NaN
X6 NaN NaN
X7 NaN NaN
X8 NaN NaN
在这里我很困惑。我以前从未做过此事,可以借助一些帮助弄清楚自己在做什么错。
我实际上想做的是对真实数据进行敏感性分析,但此时我已经完全迷失了。这是一个示例;
B<-c(14524.12691, 9755.416062, 14022.21327, 7865.844439, 12770.56613, 14736.12471,
13287.55742, 15821.41177, 10444.19809, 14800.05292, 7542.670071, 16948.86227,
9454.267877, 12361.3193, 12770.56613)
L<-rep((0.5),15)
S<-rep((0.8),15)
X1<-c(3, 3, 3, 4, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 3)
X2<-c(3, 4, 2, 4, 4, 2, 4, 3, 2, 4, 4, 3, 2, 3, 2)
X3<-c(4, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 4, 4)
X4<-c(4, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 4, 4)
X5<-c(4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4)
X6<-c(4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4)
X7<-c(3, 4, 3, 4, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 3)
X8<-c(3, 3, 3, 4, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 3)
data<-data.frame(B,L,S,X1,X2,X3,X4,X5,X6,X7,X8)
提前感谢您的帮助。