1

Ox (C、C++、および Java に似た構文) でいくつかのデータをシミュレートしていましたが、代入部分で行き詰まりました。たとえば、データ g_mY をシミュレートするこの関数があるとします。

decl g_mX, g_mY; 

simuldata(const ct) //  ct : number of observations 
{                                                      

    decl mx = ranbinomial(ct, 1, 1, 0.40)~ 100*ranu(ct, 1); 
    decl veps = rann(ct, 1); 
    decl vp = < .0485434;-.006764 ; -.0187657; -1.106632 ; .3647326 ; 1.11204 >; 
    g_mX = mx[][0:1] ; // regressors: Gender, Age.
    
    decl cut1 = vp[2], cut2 = vp[3], cut3 = vp[4], cut4 = vp[5] ;
    decl Yt = g_mX*vp[:1] + veps ; // latent variable

私がやりたいことは、上で定義したカットポイント (cut...) と潜在変数 (Yt) を使用して g_mY を作成し、g_mY の代替値を計算することです。もっとこのように:

g_mY = new matrix[rows(g_mX)][1] ;  // dependent variable
        for(decl i = 0; i < rows(g_mX); ++i)
          {
            if(Yt[i] < cut1)
                {
                 g_mY[i] = < a number between 1 and 100, but != to a multiple of 5 >
                }

            else if(Yt[i]> cut1 .&& Yt[i]<= cut2)
                {
                g_mY[i] = 5   || g_mY[i] = 15  || g_mY[i] = 35  || g_mY[i] = 45  || g_mY[i] = 55 ||
                g_mY[i] = 65  || g_mY[i] = 85  || g_mY[i] = 95 ; 

                // one of these multiples of 5 that are not multiples of 10
                }

            else if(Yt[i]> cut2 .&& Yt[i] <= cut3)
                {
                 g_mY[i] = 10  || g_mY[i] = 20  || g_mY[i] = 30   || g_mY[i] = 40  ||
                 g_mY[i] = 60  || g_mY[i] = 70  || g_mY[i] = 80   || g_mY[i] = 90 ; 

                // one of these multiples of 10
                }

            else if(Yt[i] > cut3 .&& Yt[i] <= cut4)
                {
                g_mY[i] = 25 || g_mY[i] = 75 ; //either 25 or 75
                }

            else if(Yt[i] > cut4)
                {
                g_mY[i] = 50 || g_mY[i] = 100; //either 50 or 100
                }
           }
return 1
}

g_mY を印刷すると、ゼロしかありません。どうすればこれをうまく達成できますか?

どうもありがとう。

4

1 に答える 1