亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Matlab 或 Python 中使用預測的 cdf 生成一些場景?

如何在 Matlab 或 Python 中使用預測的 cdf 生成一些場景?

千萬里不及你 2022-07-12 10:05:06
我使用過 Matlab,但我也歡迎使用 python 來解決問題。我有一個隨機變量的預測 CDF(即 CDF^),Var并且想使用這個預測的 CDF(CDF^)生成 N 個場景。這是我所做的。我想知道這種方法是否有意義,以及如何在步驟 3 中自動生成 N 個場景。1) 我在 CDF^ 上使用 MLE 擬合假設的累積分布函數(比如說 Weibull),并獲得擬合函數的相應參數。2)使用這些參數,我繪制了假設分布的pdf。3)在這一步中,我不知道該做什么以及如何做!基本上我想,我應該var通過計算每個矩形的面積來離散化并找到每個段的相應概率。4) 我如何以 PMF 形式繪制我的原始數據 (var),因為它已經是 CDF 形式?!var= [ 0.001    0.01    97  145 150 189 202 183 248 305 492 607 1013];cdf_prob = [0.01, 0.05, 0.15, 0.25, 0.35, 0.45, 0.50, 0.55, 0.65, 0.75, 0.85, 0.95, 0.99];                             % cumulative prob.a= mle(var, 'distribution', 'wbl');              plot(var, cdf_prob, 'o-')                         % my datahold onxgrid = linspace (0, 1.1*max(var));plot (xgrid, wblcdf(xgrid,a(1),a(2)));            % fitted cdffigure(2)                                         % fitted PDFpd= makedist('wbl', 'a', a(1),'b', a(2));y=pdf(pd, xgrid);plot(xgrid,y)第 3 步:
查看完整描述

1 回答

?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

生成樣本:
您可以通過多種方式從分布中生成樣本。如果您已經知道要使用特定的發行版,例如Weibull 發行版,那么兩個簡單的選擇是:

  1. 使用makedist()and random()[1]

  2. 使用wblrnd().

兩者都需要使用統計工具箱。無工具箱的方法也是可能的。建議避免命名變量var,因為它掩蓋了var()函數。

% MATLAB R2019a

a = [209.2863 0.5054];        % a = mle(var, 'distribution', 'wbl');  % from OP code

NumSamples = 500;

pd = makedist('Weibull',a(1),a(2))    


% Method 1

X = random(pd,NumSamples,1);


% Method 2

X2 = wblrnd(a(1),a(2),NumSamples,1);

繪制原始數據:
如果假設數據來自連續分布,例如 Weibull 分布,則應使用概率密度函數 (PDF)直觀地顯示相對機會,而不是離散概率質量函數 (PMF)。PMF 僅適用于離散變量。請注意,累積分布函數 (CDF)適用于連續和離散隨機變量。

這可以通過屬性'Normalization','pdf'中的名稱-值對來完成。histogram()為了獲得更好的結果,通常建議調整直方圖 bin 的數量(在屬性中),但只有 13 個數據點,這價值有限。

h = histogram(var,'Normalization','pdf')
h.NumBins = 13;

您還可以將擬合分布與經驗數據疊加。

figure, hold on

h = histogram(var,'Normalization','pdf','DisplayName','Data');

xLimits = xlim;

Xrng = 0:.01:xLimits(2);

plot(Xrng,pdf(pd,Xrng),'r--','DisplayName','Fit')

xlabel('Var')

ylabel('Probability Density Function (PDF)')

legend('show')


% Adjust these manually

ylim([0 0.02])

h.NumBins = 13;

替代方案:[2]


您可以使用fitdist()which 可以適合核密度,并且仍然允許使用概率分布對象的所有函數,包括random()和pdf()。


請注意,自從 Weibull支持[0, inf].


pd2 = fitdist(X,'Kernel')

pd2t = truncate(pd2,0,inf)

然后繪圖仍然相對容易,并且與前面的示例類似。


figure, hold on

h = histogram(var,'Normalization','pdf','DisplayName','Data');

xLimits = xlim;

Xrng = 0:.01:xLimits(2);

plot(Xrng,pdf(pd2t,Xrng),'r--','DisplayName','Fit')

xlabel('Var')

ylabel('Probability Density Function (PDF)')

legend('show')

h.NumBins = 13;

剩下的選擇是利用ksdensity()來獲取情節。


查看完整回答
反對 回復 2022-07-12
  • 1 回答
  • 0 關注
  • 282 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號