Une aire sous la courbe de densité légèrement supérieure à 1, comme 1.0151, est due à des erreurs d'approximation numérique, souvent causées par un pas discret ou un faible nombre de points. Bien que légèrement imprécise, cette valeur est généralement acceptable. Pour améliorer la précision, réduisez le pas ou augmentez les réalisations aléatoires.TP Signaux aléatoires - SRT4

TP3 Dénération de variables aléatoires discrètes dépendantes

Nom - Prénom : Avenel-Théophile
Supposons deux variables aléatoires discrètes X et Y dont les probabilités conjointes sont données dans le tableau ci-dessous.
  1. Calculer et .
  2. Calculer et .
  3. Générer des valeurs de X et Y et vérifier que l'on obtient les bonnes probabilités.
close all;
clear all;
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Génération de v.a. discrètes dépendantes
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
n = 5000; % Nombre de réalisations
 
% Génération des variables aléatoires discrètes dépendantes
XYgene = jointdv(0.3, 0.2, 0.2, 0.3, n);
X = XYgene(:, 1);
Y = XYgene(:, 2);
 
%% Probabilités marginales de X
% Probabilité P(X=1)
PX1 = mean(X);
fprintf('P(X = 1) = %.4f\n', PX1);
P(X = 1) = 0.4976
 
% Probabilité P(X=0)
PX0 = 1 - PX1; % Puisque P(X=0) + P(X=1) = 1
fprintf('P(X = 0) = %.4f\n', PX0);
P(X = 0) = 0.5024
 
%% Probabilités marginales de Y
% Probabilité P(Y=1)
PY1 = mean(Y);
fprintf('P(Y = 1) = %.4f\n', PY1);
P(Y = 1) = 0.5002
 
% Probabilité P(Y=0)
PY0 = 1 - PY1; % Puisque P(Y=0) + P(Y=1) = 1
fprintf('P(Y = 0) = %.4f\n', PY0);
P(Y = 0) = 0.4998
 
%% Probabilités conjointes
% Probabilité P(X=0, Y=0)
ind = find(Y == 0); % Indices où Y = 0
XsY0 = X(ind); % Valeurs de X où Y = 0
ind = find(XsY0 == 0); % Indices où X = 0
nbX0Y0 = size(ind, 1);
PX0Y0 = nbX0Y0 / n;
fprintf('P(X = 0, Y = 0) = %.4f\n', PX0Y0);
P(X = 0, Y = 0) = 0.3050
 
% Probabilité P(X=0, Y=1)
ind = find(Y == 1); % Indices où Y = 1
XsY1 = X(ind); % Valeurs de X où Y = 1
ind = find(XsY1 == 0); % Indices où X = 0
nbX0Y1 = size(ind, 1);
PX0Y1 = nbX0Y1 / n;
fprintf('P(X = 0, Y = 1) = %.4f\n', PX0Y1);
P(X = 0, Y = 1) = 0.1974
 
% Probabilité P(X=1, Y=1)
ind = find(Y == 1); % Indices où Y = 1
XsY1 = X(ind); % Valeurs de X où Y = 1
ind = find(XsY1 == 1); % Indices où X = 1
nbX1Y1 = size(ind, 1);
PX1Y1 = nbX1Y1 / n;
fprintf('P(X = 1, Y = 1) = %.4f\n', PX1Y1);
P(X = 1, Y = 1) = 0.3028
 
% Probabilité P(X=1, Y=0)
PX1Y0 = PX1 - PX1Y1; % Probabilité conjointe restante (P(X=1, Y=0))
fprintf('P(X = 1, Y = 0) = %.4f\n', PX1Y0);
P(X = 1, Y = 0) = 0.1948
 
%% Probabilités conditionnelles
% Probabilité P(X=0 | Y=0)
ind = find(Y == 0); % Indices où Y = 0
nbY0 = size(ind, 1); % Nombre de Y = 0
XsY0 = X(ind); % Valeurs de X où Y = 0
PX0sY0 = mean(XsY0 == 0); % Probabilité conditionnelle
fprintf('P(X = 0 | Y = 0) = %.4f\n', PX0sY0);
P(X = 0 | Y = 0) = 0.6102
 
% Probabilité P(X=0 | Y=1)
ind = find(Y == 1); % Indices où Y = 0
nbY1 = size(ind, 1); % Nombre de Y = 0
XsY1 = X(ind); % Valeurs de X où Y = 0
PX0sY1 = mean(XsY1 == 0); % Probabilité conditionnelle
fprintf('P(X = 0 | Y = 0) = %.4f\n', PX0sY1);
P(X = 0 | Y = 0) = 0.3946
 
 
% Probabilité P(Y=0 | X=0)
ind = find(X == 0); % Indices où X = 0
nbX0 = size(ind, 1); % Nombre de X = 0
YsX0 = Y(ind); % Valeurs de Y où X = 0
PY0sX0 = mean(YsX0 == 0); % Probabilité conditionnelle
fprintf('P(Y = 0 | X = 0) = %.4f\n', PY0sX0);
P(Y = 0 | X = 0) = 0.6071
 
% Probabilité P(Y=0 | X=1)
ind = find(X == 1); % Indices où X = 1
nbX1 = size(ind, 1); % Nombre de X = 1
YsX1 = Y(ind); % Valeurs de Y où X = 1
PY0sX1 = mean(YsX1 == 0); % Probabilité conditionnelle
fprintf('P(Y = 0 | X = 1) = %.4f\n', PY0sX1);
P(Y = 0 | X = 1) = 0.3915
 
%% Fonction de génération de variables discrètes dépendantes
function XY = jointdv(a, b, c, d, n)
u = rand(n, 1); % Génération de n nombres aléatoires entre 0 et 1
XY = zeros(n, 2); % Initialisation du tableau des résultats
for k = 1:n
if u(k) < a
XY(k, :) = [0 0]; % Cas (X = 0, Y = 0)
elseif u(k) < a + b
XY(k, :) = [0 1]; % Cas (X = 0, Y = 1)
elseif u(k) < a + b + c
XY(k, :) = [1 0]; % Cas (X = 1, Y = 0)
else
XY(k, :) = [1 1]; % Cas (X = 1, Y = 1)
end
end
end