Треугольные распределенные случайные переменные (PDF и CDF) в MATLAB

Я столкнулся с ошибкой при построении CDF для треугольного распределения; Я могу построить гистограмму, используя Создание треугольного распределения в MATLAB, но как сделать Я строю CDF?

n = 10000; %Random number 
a = 0.26; %Min 
b = 0.46; %Max
c = 0.35; %Mode 
u = rand(n, 1); 
x = zeros(n, 1);
for i = 1:n   
    U = u(i);   
    if U < (c-a)/(b-a);    
        X = a + sqrt(U*(b-a)*(c-a)); 
    else       
        X = b - sqrt((1-U)*(b-a)*(b-c));  
    end    
    x(i) = X; 
end 
hist(x,100)

if a <= x && a <=c
  cdf = (x-a)^2/12
elseif c <= x && x <= b
  cdf = 1-(b-x)^2/4
end

if 0 <= p && p <= 0.75
  INV = a+2*sqrt(3*p);
elseif 0.75 <= p && p <= 1
  INV = b-2*sqrt(1-p)
end

person Bisu    schedule 11.08.2012    source источник


Ответы (2)


Я, наверное, что-то упускаю, но почему следующее не работает? у = hist (х, 100); cdf = cumsum (y); сюжет (cdf)

person bla    schedule 12.08.2012

Это значительно упрощается с помощью объектов распределения вероятностей в панель инструментов статистики с помощью makedist(), _ 2_ и _ 3_ функций.

Метод 1. Использование объектов распределения вероятностей (требуется набор инструментов статистики)
Вероятность Функция плотности (PDF) доступна на сайте pdf(pd,X). кумулятивная функция распределения (CDF) получается с cdf(pd,X).

% MATLAB R2019a
% Setup
a = 0;   % lowerbound
m = 5;   % mode 
b = 12;  % upperbound
pd = makedist('Triangular',a,m,b)     % Create probability distribution object

X = a:0.1:b;                          % domain of X   (useful for plotting)

figure
s(1) = subplot(1,2,1)
    plot(X,pdf(pd,X))
s(2) = subplot(1,2,2)
    plot(X,cdf(pd,X))
sgtitle('X ~ Triangular(a,m,b)')

ylabel(s(1),'PDF')
ylabel(s(2),'CDF')

Треугольное распределение PDF и CDF


Метод 2: Аналитические формулы
Вы также можете использовать известные аналитические формулы (закрытая форма) для Треугольное распределение и напрямую постройте PDF и CDF таким образом.

person SecretAgentMan    schedule 12.12.2019