# Posterior probability math to code

2 views (last 30 days)
Zakaria Djebbara on 21 Jul 2021
Commented: Zakaria Djebbara on 21 Jul 2021 I'm unsure whether I "translated" the math correctly into the code. I can't seem to make sense of the summation sign here. I know the values of x, but does the math say "sum of x from index 1 to whatever t I'm at?
sum(x(1:t))
Here's what I've come up with instead. Obviously the summation is missing.
x = [-0.46, 0.83, -3.26, -0.14, -0.68, -2.31, 0.57, 1.34, 4.58, 3.77];
T = length(x); % 10 numbers
sigma = 1;
posterior = [];
for t = 1:T
posterior = [posterior; exp((2/sigma^2) .* x(t))]; % This part
end
plot(posterior);
Could someone please have a look and direct me to some existing forum, but please not to https://se.mathworks.com/help/matlab/ref/sum.html because this doesn't help me translating the math to code.
Thanks a lot

Yazan on 21 Jul 2021
Edited: Yazan on 21 Jul 2021
First of all, you have to pay attention to the fact that there is no equality in the relation you presented, but rather a proportionality. Meaning that the posterior is given by this relation up to a nonzero constant. Now, imagine that you have a random variable , the posterior at t is given by summing the values from to , where , multiplying the result by a constant then taking e to the power of the result. Obviously, some constraints should be imposed on the definition of X such that p becomes a proper probability function.
Assuming that you have defined X, T, and sigma properly in your code, you can use this to compute the posterior
p = arrayfun(@(t) exp(sum(X(t:T))*2./sigma^2), t);
Zakaria Djebbara on 21 Jul 2021
Thanks for a proper answer. The key thing I didn't understand, which I do now given your explanation, was that the posterior is given by the summing of vector x from x1 to xT. So my code simply needed this change:
x = [-0.46, 0.83, -3.26, -0.14, -0.68, -2.31, 0.57, 1.34, 4.58, 3.77];
T = length(x); % 10 numbers
sigma = 1;
posterior = [];
for t = 1:T
posterior = [posterior; exp((2/sigma^2) .* sum(x(t:T)))]; % This part
end
plot(posterior);
It works beautifully now. Thanks again, Yazan.