1 view (last 30 days)

Show older comments

Hi all,

I am working on a question to replicate the simuelation portion of this code below. I have already generated the Emax matrix.

The code below is what I have. However, I am just getting a matrix full of 0's. Is there something I am doing wrong here?

simchoice = zeros(1000,20)

%Looping for 1000 women

for i = 1:1000

for t = 1:20

e = normrnd(0 , sqrt(sigma_e_sq),[1000,1])

if t == 1

N = 0

else

N = sum(simchoice(i, 1:(t-1)))

end

inc = alpha(5) + alpha(6) * t

simC_0 = inc - (p_n * N)

simC_1 = inc - (p_n * (N + 1))

simU_0 = simC_0 - (0.5*alpha(1)*simC_0*simC_0) + ((alpha(2) + e)*N) - (alpha(3)*N*N) + (alpha(4)*simC_0* N)

if t < 20

simV_0 = simU_0 + Emax((N+1), (t+1))

end

simchoice((i+1),t) = 0

if N <= 7

simU_1 = simC_1 - (0.5*alpha(1)*simC_1*simC_1) + ((alpha(2) + e)*(N+1)) - (alpha(3)*(N+1)*(N+1)) + (alpha(4)*simC_1* (N+1))

if t < 20

simV_1 = simU_1 + Emax((N+2), (t+1))

end

if simV_0 < simV_1

simchoice((i+1),t) = 1

end

end

end

end

Ridwan Alam
on 17 Dec 2019

Edited: Ridwan Alam
on 17 Dec 2019

Looks like your indexing is off in some places:

simchoice = zeros(1000,20)

%Looping for 1000 women

for i = 1:1000

for t = 1:20

e = normrnd(0 , sqrt(sigma_e_sq),[1000,1])

if t == 1

N = 0

else

N = sum(simchoice(i, 1:(t-1)))

end

inc = alpha(5) + alpha(6) * t

simC_0 = inc - (p_n * N)

simC_1 = inc - (p_n * (N + 1))

simU_0 = simC_0 - (0.5*alpha(1)*simC_0*simC_0) + ((alpha(2) + e)*N) - (alpha(3)*N*N) + (alpha(4)*simC_0* N)

if t < 20

simV_0 = simU_0 + Emax((N), (t+1))

end

simchoice(i,t) = 0

if N <= 7

simU_1 = simC_1 - (0.5*alpha(1)*simC_1*simC_1) + ((alpha(2) + e)*(N+1)) - (alpha(3)*(N+1)*(N+1)) + (alpha(4)*simC_1* (N+1))

if t < 20

simV_1 = simU_1 + Emax((N+1), (t+1))

end

if simV_0 < simV_1

simchoice(i,t) = 1

end

end

end

end

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

Start Hunting!