vendredi 19 août 2016

missing value where TRUE/FALSE needed in Markov-Chain

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