使用R对数据帧执行敏感性分析

时间:2019-05-18 03:01:34

标签: r function

我正在尝试对R中的数据框进行敏感性分析。对此我还很陌生,所以请帮忙。

我有一个由八个输入变量的函数定义的输出变量;这些是'B','L','S','X1','X2','X3','X4','X5','X6','X7','X8'。我需要弄清楚八个变量中的哪个是“键”变量。

B是正态分布的,其他变量具有统一的分布。 LS的范围从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)

提前感谢您的帮助。

0 个答案:

没有答案