【MATLAB第66期】#源码分享 | 基于MATLAB的PAWN全局敏感性分析模型(有条件参数和无条件参数)

【MATLAB第66期】#源码分享 | 基于MATLAB的PAWN全局敏感性分析模型(有条件参数和无条件参数)

文献参考
Pianosi, F., Wagener, T., 2015. A simple and efficient method for
global sensitivity analysis based on cumulative distribution functions.
Environ. Model. Softw. 67, 1�11. doi:10.1016/j.envsoft.2015.01.004

一、有条件参数

clear;

% Ishigami-Homma function
f = @(x,p) sin(x(1)) + p.a * sin(x(2)^2) + p.b * x(3)^4 * sin(x(1));
p.a = 2; p.b = 1;
ih = @(x) f(x, p);

% Bounds
lb = ones(1,3) * -pi; ub = ones(1,3) * pi;

% Parameters from Figure 4's caption
n=15;
Nu = 100;
Nc = 100; % Is actually 50 in the paper

% Other parameters
npts = 100; seed = 4;

[KS,xvals,y_u, y_c, par_u, par_c, ft] = PAWN(f, p, lb, ub, Nu, n, Nc, npts, seed);

m1 = min([y_c, y_u']);
m2 = max([y_c, y_u']);
[f,ci] = ksdensity(y_u, linspace(m1,m2,npts), 'Function', 'cdf');

% Begin Plotting
subplot(331); ylabel('y'); hold on;box on;
subplot(334); ylabel('CDF'); hold on;  box on;
subplot(337); ylabel('KS'); hold on; xlabel('x_1'); box on;
subplot(338); xlabel('x_2'); hold on;box on;
subplot(339); xlabel('x_3'); hold on;box on;
for ind=1:length(lb)
    subplot(330+ind)
    plot(par_c(:,ind),y_c, 'xk', 'markersize', 2);
end

crit_c = [1.22,1.36,1.48,1.63,1.73,1.95]; % 0.1, 0.05, 0.025, 0.010, 0.005, 0.001
critval = crit_c(2) * sqrt((Nu+Nc)/(Nu*Nc));

for ind=1:length(lb)
    subplot(333+ind)
    plot([-100, 100], [1, 1], 'k--'); hold on
    plot(ci,ft((ind-1)*n+1:ind*n,:), 'color', [0.8,0.8,0.8]); ylim([0,1]);
    plot(ci,f, 'r:','linewidth',4); ylim([0,1.2])
    hold off
end

colData = linspace(0,n,n)'/n; colData = [colData colData colData];

for ind=1:length(lb)
    subplot(336+ind)
    [xtoplot, indices] = sort(xvals(ind,:));
    ytoplot = KS(ind, :); ytoplot = ytoplot(indices);
    plot([min(xvals(:)), max(xvals(:))], [critval,critval], 'k--'); hold on;
    plot(xtoplot, ytoplot, 'k');
    scatter(xtoplot, ytoplot, [],  colData, 'filled', 'markeredgecolor', 'k'); 
    ylim([0,1])
    hold off
end

disp(strcat('Median of KS : ', num2str(median(KS,2)')))
disp(strcat('Max of KS : ', num2str(max(KS'))))

在这里插入图片描述

二、无条件参数

clear;

%目标函数
model=@(x)x(1)^2+2*x(2)+x(3)-1;

% 参数范围
lb=[0 0 0 ];%每个参数的

下限向量(1xM)
ub=[10 10 10];%每个参数的上界的向量(1xM)
% 参数设置
Nu = 100;%Nu:无条件参数空间的样本数

% 其他参数
npts = 100;%npts:用于核密度估计的点数
seed = 4;%seed:随机数种子

[y_u,  par_u ,f,ci] = PAWN(model, lb, ub, Nu, npts, seed);
%初始化

%y_u 无条件模拟的输出
 %par_u 样本生成
  %f 用核密度评估无条件样本的CDF(分布函数),表示连续型随机变量x的概率
%f返回x中样本数据的概率密度估计f。
%该估计基于正核函数,并在覆盖x中数据范围的等间距点ci处进行评估。

% Begin Plotting
figure()
subplot(231); ylabel('y'); hold on;box on;
subplot(234); ylabel('CDF'); hold on;  box on;
for ind=1:length(lb)
   subplot(230+ind)
   plot(par_u(:,ind),y_u, 'xk', 'markersize', 2);
   xlabel(['x' num2str(ind)])
end


for ind=1:length(lb)
    subplot(233+ind)
    plot([-100, 100], [1, 1], 'k--'); hold on
    plot(ci,f, 'r:','linewidth',4); ylim([0,1.2])
     xlabel(['x' num2str(ind)])
    hold off
end

在这里插入图片描述

三、代码获取

1.阅读首页置顶文章
2.关注CSDN
3.根据自动回复消息,回复“66期”以及相应指令,即可获取对应下载方式。

### 回答1: matlab全局敏感性分析是一种通过系统性改变输入参数来评估模型输出响应的变化程度的方法。它可以帮助我们了解模型的稳定性和敏感性,识别关键因素,以及优化参数设置。 其中dynia方法使用动力系统模型进行敏感性分析,它通过分析系统的稳定性和参数的变化来评估参数的重要性。 eet方法是基于均匀实验设计的敏感性分析方法,它通过对输入参数进行正交设计,并计算响应的主效应和交互效应来确定参数的重要性。 fast方法是一种基于频谱方法的快速敏感性分析方法,它通过利用浮动参数值的傅里叶变换来评估参数对输出响应的贡献。 glue方法是一种基于采样和检验的全局敏感性分析方法,它通过生成参数空间中的随机采样点,并使用统计检验方法来评估参数对输出响应的敏感性pawn方法是一种基于Monte Carlo采样和排序的敏感性分析方法,它通过对参数进行随机采样,并计算参数的敏感度指数来评估参数的重要性。 rsa方法是一种基于多元回归分析敏感性分析方法,它通过建立多元回归模型来评估参数对输出的解释能力。 vbsa方法是一种基于方差分解的敏感性分析方法,它通过分解总方差来评估参数和交互作用的贡献。 综上所述,matlab全局敏感性分析提供了多种方法来评估参数对模型输出的敏感性和重要性,有助于优化模型参数设置和识别系统关键因素。 ### 回答2: MATLAB全局敏感性分析是一种用于评估不同输入因素对输出结果的影响程度的方法。它可以帮助我们了解输入参数的重要性,优化模型和参数选择。 在MATLAB中,有几种常用的全局敏感性分析方法。其中,dynia方法基于改变参数值并观察输出值的变化来评估参数敏感性。eet方法利用概率分布函数来估计参数敏感性。fast方法通过建立响应曲面模型来估计参数敏感性。 glue方法通过将全局敏感性分析与响应面建模结合起来,以评估输入参数敏感性pawn方法通过随机采样和参数排序来评估参数敏感性。rsa方法通过斜率分析来评估参数敏感性。vbsa方法基于统计方法来评估参数敏感性。 通过使用这些全局敏感性分析方法,我们可以确定哪些参数对输出结果的影响最大,从而帮助我们更好地了解和预测系统的行为。这些方法能够提供有关参数重要性的定量和可视化的结果,有助于优化系统设计和参数调整。在MATLAB中,可以使用相应的工具箱或编程来实施这些方法,以便进行全局敏感性分析。 ### 回答3: matlab全局敏感性分析是一种通过使用各种方法如dynia、eet、fast、glue、pawn、rsa和vbsa等,评估模型在输入参数变化下的响应变化的过程。全局敏感性分析可以帮助我们了解模型中哪些参数对输出结果的影响较大,从而帮助优化和改进模型。 dynia方法是一种动态全局敏感性分析方法,它通过模拟参数变化的过程来估计参数的过程敏感性。该方法可以用于评估参数的主要影响和相互影响。 eet方法是一种等效极端值全局敏感性分析方法,它通过使用原始模型和等效极端值模型进行比较,评估参数敏感性。通过比较两个模型的输出差异,可以得出参数敏感性信息。 fast方法是一种基于快速傅立叶变换的快速全局敏感性分析方法,它通过将参数分解为主效应和相互效应来评估参数敏感性。 glue方法是一种光滑局部线性近似全局敏感性分析方法,它通过构建光滑模型来评估参数敏感性。该方法可以用于评估参数的主要影响和非线性效应。 pawn方法是一种随机抽样方法,它通过随机选择参数值来评估参数敏感性。通过对每个参数进行随机选择和模型运行,可以得出参数敏感性信息。 rsa方法是一种响应面全局敏感性分析方法,它通过构建响应面模型来评估参数敏感性。响应面模型可以用于预测模型响应和参数变化之间的关系。 vbsa方法是一种变异贝叶斯敏感性分析方法,它通过使用变异贝叶斯方法来估计参数敏感性。该方法可以处理带有不确定性的参数,并提供参数的群体敏感性信息。 综上所述,matlab全局敏感性分析涵盖了多种方法,可以帮助我们了解模型参数敏感性和其对输出结果的影响,从而指导模型的优化和改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随风飘摇的土木狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值