1 回答

TA貢獻2036條經驗 獲得超8個贊
生成樣本:
您可以通過多種方式從分布中生成樣本。如果您已經知道要使用特定的發行版,例如Weibull 發行版,那么兩個簡單的選擇是:
使用
makedist()
andrandom()
, [1]或使用
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()來獲取情節。
添加回答
舉報