I have been trying to use Markov Chain to improve my model and get trouble when computing transition matrix. It appears missing values. Someone know why my code is wrong? Many thanks
I already defined all the variables to be 0 at first. mresiduals is residuals of my model. len is the length of vector(residuals).
for (ele in 1:len) {
if (mresiduals[ele] < lim5)
{
p1 = p1 + 1
if (mresiduals[ele + 1] < lim5)
{
p1I = p1I + 1
} else if (mresiduals[ele + 1] > lim5 & mresiduals[ele + 1] < lim4)
{
p1II = p1II + 1
} else if (mresiduals[ele + 1] > lim4 & mresiduals[ele + 1] < lim3)
{
p1III = p1III + 1
} else if (mresiduals[ele + 1] > lim3 & mresiduals[ele + 1] < lim2)
{
p1IV = p1IV + 1
} else{
p1V = p1V + 1
}
} else if (ele > lim5 & ele < lim4)
{
p2 = p2 + 1
if (mresiduals[ele + 1] < lim5)
{
p2I = p2I + 1
} else if (mresiduals[ele + 1] > lim5 & mresiduals[ele + 1] < lim4)
{
p2II = p2II + 1
} else if (mresiduals[ele + 1] > lim4 & mresiduals[ele + 1] < lim3)
{
p2III = p2III + 1
} else if (mresiduals[ele + 1] > lim3 & mresiduals[ele + 1] < lim2)
{
p2IV = p2IV + 1
} else {
p2V = p2V + 1
}
} else if (ele > lim4 & ele < lim3)
{
p3 = p3 + 1
if (mresiduals[ele + 1] < lim5)
{
p3I = p3I + 1
} else if (mresiduals[ele + 1] > lim5 & mresiduals[ele + 1] < lim4)
{
p3II = p3II + 1
} else if (mresiduals[ele + 1] > lim4 & mresiduals[ele + 1] < lim3)
{
p3III = p3III + 1
} else if (mresiduals[ele + 1] > lim3 & mresiduals[ele + 1] < lim2)
{
p3IV = p3IV + 1
} else{
p3V = p3V + 1
}
} else if (ele > lim4 & ele < lim3)
{
p4 = p4 + 1
if (mresiduals[ele + 1] < lim5)
{
p4I = p4I + 1
} else if (mresiduals[ele + 1] > lim5 & mresiduals[ele + 1] < lim4)
{
p4II = p4II + 1
} else if (mresiduals[ele + 1] > lim4 & mresiduals[ele + 1] < lim3)
{
p4III = p4III + 1
} else if (mresiduals[ele + 1] > lim3 & mresiduals[ele + 1] < lim2)
{
p4IV = p4IV + 1
} else{
p4V = p4V + 1
}
} else{
p5 = p5 + 1
if (mresiduals[ele + 1] < lim5)
{
p5I = p5I + 1
} else if (mresiduals[ele + 1] > lim5 & mresiduals[ele + 1] < lim4)
{
p5II = p5II + 1
} else if (mresiduals[ele + 1] > lim4 & mresiduals[ele + 1] < lim3)
{
p5III = p5III + 1
} else if (mresiduals[ele + 1] > lim3 & mresiduals[ele + 1] < lim2)
{
p5IV = p5IV + 1
} else{
p5V = p5V + 1
}
}
}
Aucun commentaire:
Enregistrer un commentaire