Random draws from conditional multinomial distribution

조회 수: 3 (최근 30일)
Laura Freitas
Laura Freitas 2021년 10월 26일
댓글: Laura Freitas 2021년 10월 26일
I have to simulate data for 100 agents over 10,000 time periods for a variable, x. The initial value of x at time 0 for all agents is 0. The distribution of is a multinomial distribution, conditional on the past period's value, . Basically, can remain unchanged with probability 0.2, increase by 2571 with probability 0.5, increase by 2571*2 with probability 0.2, and increase by 2571*3 with probability 0.1, at any period. can never be lower than . How do I generate random values for this distribution?
I have tried:
x = mnrnd()
command, but I can't fit it to these specifications. Any help would be greatly appreciated!

채택된 답변

Alan Stevens
Alan Stevens 2021년 10월 26일
Something like
u = rand(1)
if u<0.2
d = 0;
elseif u<0.7
d = 2571;
elseif u<0.9
d = 2571^2;
else
d = 2571^3;
end
x(t) = x(t-1) + d;
(the last line assumes t is an integer).
  댓글 수: 5
Alan Stevens
Alan Stevens 2021년 10월 26일
function xnew = fn(x,t)
u = rand;
if u<0.2
d = 0;
elseif u<0.7
d = 2571;
elseif u<0.9
d = 2571^2;
else
d = 2571^3;
end
x(t) = x(t-1) + d;
end
Note that functions go at the end of a script.
Laura Freitas
Laura Freitas 2021년 10월 26일
It worked! Thanks!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by