Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • NLSUR estimation

    Hi all,
    I am estimating a mixed demand model using nlsur command.
    When I am estimating it with 8 products, 4 rationed and 4 not, I got results. when I am estimating it with 3 rationed and 7 not. I got the following essage and I dont know what is the problem:

    nlsursur returned 198
    verify that nlsursur is a function evaluator program

    Here is my command:

    program drop nlsursur

    program nlsursur, rclass
    version 13
    syntax varlist(min=20 max=20) if, at(name)
    local w1: word 1 of `varlist'
    local w2: word 2 of `varlist'
    local w3: word 3 of `varlist'
    local w4: word 4 of `varlist'
    local w5: word 5 of `varlist'
    local w6: word 6 of `varlist'
    local w7: word 7 of `varlist'
    local w8: word 8 of `varlist'
    local w9: word 9 of `varlist'

    local p4: word 10 of `varlist'
    local p5: word 11 of `varlist'
    local p6: word 12 of `varlist'
    local p7: word 13 of `varlist'
    local p8: word 14 of `varlist'
    local p9: word 15 of `varlist'
    local p10: word 16 of `varlist'

    local z1: word 17 of `varlist'
    local z2: word 18 of `varlist'
    local z3: word 19 of `varlist'
    local y: word 20 of `varlist'


    tempname a4 a5 a6 a7 a8 a9 a10
    scalar `a4' = NR4
    scalar `a5' = NR5
    scalar `a6' = NR6
    scalar `a7' = NR7
    scalar `a8' = NR8
    scalar `a9' = NR9
    scalar `a10' = NR10


    * Symmetry restrictions: bij=bji

    tempname b4_4 b4_5 b4_6 b4_7 b4_8 b4_9 b4_10
    scalar `b4_4' = `at'[1,1]
    scalar `b4_5' = `at'[1,2]
    scalar `b4_6' = `at'[1,3]
    scalar `b4_7' = `at'[1,4]
    scalar `b4_8' = `at'[1,5]
    scalar `b4_9' = `at'[1,6]
    scalar `b4_10' = 0 -`b4_4'-`b4_5'-`b4_6'-`b4_7'-`b4_8'-`b4_9'

    tempname b5_4 b5_5 b5_6 b5_7 b5_8 b5_9 b5_10
    scalar `b5_4' = `b4_5'
    scalar `b5_5' = `at'[1,7]
    scalar `b5_6' = `at'[1,8]
    scalar `b5_7' = `at'[1,9]
    scalar `b5_8' = `at'[1,10]
    scalar `b5_9' = `at'[1,11]
    scalar `b5_10' = 0 -`b5_4'-`b5_5'-`b5_6'-`b5_7'-`b5_8'-`b5_9'

    tempname b6_4 b6_5 b6_6 b6_7 b6_8 b6_9 b6_10
    scalar `b6_4' = `b4_6'
    scalar `b6_5' = `b5_6'
    scalar `b6_6' = `at'[1,12]
    scalar `b6_7' = `at'[1,13]
    scalar `b6_8' = `at'[1,14]
    scalar `b6_9' = `at'[1,15]
    scalar `b6_10' = 0 -`b6_4'-`b6_5'-`b6_6'-`b6_7'-`b6_8'-`b6_9'


    tempname b7_4 b7_5 b7_6 b7_7 b7_8 b7_9 b7_10
    scalar `b7_4' = `b4_7'
    scalar `b7_5' = `b5_7'
    scalar `b7_6' = `b6_7'
    scalar `b7_7' = `at'[1,16]
    scalar `b7_8' = `at'[1,17]
    scalar `b7_9' = `at'[1,18]
    scalar `b7_10' = 0 -`b7_4'-`b7_5'-`b7_6'-`b7_7'-`b7_8'-`b7_9'


    tempname b8_4 b8_5 b8_6 b8_7 b8_8 b8_9 b8_10
    scalar `b8_4' = `b4_8'
    scalar `b8_5' = `b5_8'
    scalar `b8_6' = `b6_8'
    scalar `b8_7' = `b7_8'
    scalar `b8_8' = `at'[1,19]
    scalar `b8_9' = `at'[1,20]
    scalar `b8_10' = 0 -`b8_4'-`b8_5'-`b8_6'-`b8_7'-`b8_8'-`b8_9'

    tempname b9_4 b9_5 b9_6 b9_7 b9_8 b9_9 b9_10
    scalar `b9_4' = `b4_9'
    scalar `b9_5' = `b5_9'
    scalar `b9_6' = `b6_9'
    scalar `b9_7' = `b7_9'
    scalar `b9_8' = `b8_9'
    scalar `b9_9' = `at'[1,21]
    scalar `b9_10' = 0 -`b9_4'-`b9_5'-`b9_6'-`b9_7'-`b9_8'-`b9_9'


    tempname b10_4 b10_5 b10_6 b10_7 b10_8 b10_9 b10_10
    scalar `b10_4' = `b4_10'
    scalar `b10_5' = `b5_10'
    scalar `b10_6' = `b6_10'
    scalar `b10_7' = `b7_10'
    scalar `b10_8' = `b8_10'
    scalar `b10_9' = `b9_10'
    scalar `b10_10' = 0 -`b10_4'-`b10_5'-`b10_6'-`b10_7'-`b10_8'-`b10_9'

    tempname d4 d5 d6 d7 d8 d9 d10
    scalar `d4' = `at'[1,22]
    scalar `d5' = `at'[1,23]
    scalar `d6' = `at'[1,24]
    scalar `d7' = `at'[1,25]
    scalar `d8' = `at'[1,26]
    scalar `d9' = `at'[1,27]
    scalar `d10' = 0 -`d4'-`d5'-`d6'-`d7'-`d8'-`d9'

    tempname beta4 beta5 beta6 beta7 beta8 beta9 beta10
    scalar `beta4' = `at'[1,28]
    scalar `beta5' = `at'[1,29]
    scalar `beta6' = `at'[1,30]
    scalar `beta7' = `at'[1,31]
    scalar `beta8' = `at'[1,32]
    scalar `beta9' = `at'[1,33]
    scalar `beta10' = 0 -`beta4'-`beta5'-`beta6'-`beta7'-`beta8'-`beta9'

    * The constraints for the 3 equations of the rations: s=k=1,2,3

    tempname g1_1 g1_2 g1_3
    scalar `g1_1' = `at'[1,34]
    scalar `g1_2' = `at'[1,35]
    scalar `g1_3' = `at'[1,36]

    tempname g2_1 g2_2 g2_3
    scalar `g2_1' = `g1_2'
    scalar `g2_2' = `at'[1,37]
    scalar `g2_3' = `at'[1,38]

    tempname g3_1 g3_2 g3_3
    scalar `g3_1' = `g1_3'
    scalar `g3_2' = `g2_3'
    scalar `g3_3' = `at'[1,39]

    tempname mu1 mu2 mu3
    scalar `mu1' = `at'[1,40]
    scalar `mu2' = `at'[1,41]
    scalar `mu3' = `at'[1,42]

    tempname gamma1 gamma2 gamma3
    scalar `gamma1' = `at'[1,43]
    scalar `gamma2' = `at'[1,44]
    scalar `gamma3' = `at'[1,45]

    * i=4,5,6,7,8,9, 10 and k=1,2,3

    tempname l4_1 l5_1 l6_1 l7_1 l8_1 l9_1 l10_1
    scalar `l4_1' = `at'[1,46]
    scalar `l5_1' = `at'[1,47]
    scalar `l6_1' = `at'[1,48]
    scalar `l7_1' = `at'[1,49]
    scalar `l8_1' = `at'[1,50]
    scalar `l9_1' = `at'[1,51]
    scalar `l10_1' = 0 - (`l4_1'+`l5_1' + `l6_1' + `l7_1'+`l8_1' + `l9_1')

    tempname l4_2 l5_2 l6_2 l7_2 l8_2 l9_2 l10_2
    scalar `l4_2' = `at'[1,52]
    scalar `l5_2' = `at'[1,53]
    scalar `l6_2' = `at'[1,54]
    scalar `l7_2' = `at'[1,55]
    scalar `l8_2' = `at'[1,56]
    scalar `l9_2' = `at'[1,57]
    scalar `l10_2' = 0 - (`l4_2'+`l5_2' + `l6_2' + `l7_2'+`l8_2' + `l9_2')

    tempname l4_3 l5_3 l6_3 l7_3 l8_3 l9_3 l10_3
    scalar `l4_3' = `at'[1,58]
    scalar `l5_3' = `at'[1,59]
    scalar `l6_3' = `at'[1,60]
    scalar `l7_3' = `at'[1,61]
    scalar `l8_3' = `at'[1,62]
    scalar `l9_3' = `at'[1,63]
    scalar `l10_3' = 0 - (`l4_3'+`l5_3' + `l6_3' + `l7_3'+`l8_3' + `l9_3')


    quietly {

    /* Define main expressions */

    /* MUTZ = (mu' z) */
    tempvar mutz
    gen `mutz' = (`mu1'*`z1') + (`mu2'*`z2') + (`mu3'*`z3')


    /* ATP = (a' p) */
    tempvar atp
    gen `atp' = 0
    forvalues i = 4/10 {
    replace `atp' = `atp' + (`p`i''*`a`i'')
    }

    /* ZTGZ = (z' G z) */
    tempvar ztgz
    gen `ztgz' = 0
    forvalues s = 1/3 {
    forvalues k = 1/3 {
    replace `ztgz' = `ztgz' + (`z`k''* `g`k'_`s'')*`z`s''
    }
    }


    /* BETATP = (beta' p) */
    tempvar betatp
    gen `betatp' = 0
    forvalues i = 4/10 {
    replace `betatp' = `betatp' + (`p`i''*`beta`i'')
    }


    /* GAMMATZ = (gamma' z) */
    tempvar gammatz
    gen double `gammatz' = 0
    forvalues s = 1/3 {
    replace `gammatz' = `gammatz' + (`gamma`s''*`z`s'')
    }


    /* DELTATP = (delta' p) */
    tempvar deltatp
    gen double `deltatp' = 0
    forvalues i = 4/10 {
    replace `deltatp' = `deltatp' + (`d`i''*`p`i'')
    }


    /* Sum of B_ij * p_j terms */
    tempvar sbp4 sbp5 sbp6 sbp7 sbp8 sbp9 sbp10
    forvalues i = 4/10 {
    gen double `sbp`i'' = 0

    forvalues i = 4/10 {
    replace `sbp`i'' = `sbp`i'' + (`b`i'_`j''*`p`j'')
    }
    }


    /* PTBP = (p' B p) */
    tempvar ptbp
    gen double `ptbp' = 0
    forvalues i = 4/10 {
    replace `ptbp' = `ptbp' + (`sbp`i''*`p`i'')
    }

    /*sum of GAMMA_ks * z_s terms */
    tempvar sgz1 sgz2 sgz3

    forvalues s = 1/3 {
    gen double `sgz`s'' = 0

    forvalues k = 1/3 {
    replace `sgz`s'' = `sgz`s'' + (`g`s'_`k''*`z`k'')
    }
    }

    /* Mixed Utility VM = (VM) */
    tempvar N D vm
    gen `N'= `y' - `deltatp'
    gen `D'=`betatp' + 0.5*(`ptbp'/`atp') - 0.5*(`atp'*`ztgz')
    gen `vm' = `N'/`D'



    replace `w1'= - ( `atp'*`mu1' + (`atp'*`gamma1' + `atp'*`sgz1' +(`l4_1'*`p4') + (`l5_1'*`p5')+ (`l6_1'*`p6')+(`l7_1'*`p7')+(`l8_1'*`p8')+(`l9_1'* `p9')++(`l10_1'*`p10'))*`vm' )*`z1'/`y' `if'
    replace `w2'= - ( `atp'*`mu2' + (`atp'*`gamma2' + `atp'*`sgz2' +(`l4_2'*`p4') + (`l5_2'*`p5')+ (`l6_2'*`p6')+(`l7_2'*`p7')+(`l8_2'*`p8')+(`l9_2'* `p9')++(`l10_2'*`p10'))*`vm' )*`z2'/`y' `if'
    replace `w3'= - ( `atp'*`mu3' + (`atp'*`gamma3' + `atp'*`sgz3' +(`l4_3'*`p4') + (`l5_3'*`p5')+(`l6_3'*`p6')+(`l7_3'*`p7')+(`l8_3'* `p8') +(`l9_3'*`p9')+(`l10_3'*`p10'))*`vm' )*`z3'/`y' `if'

    replace `w4'= (`d4' + `mutz'*`a4' + (`beta4' + `sbp4'/`atp' + (`l4_1'*`z1')+ (`l4_2'*`z2')+(`l4_3'*`z3') + `a4'*(`gammatz' - 0.5*`ptbp'/(`atp'*`atp') + 0.5*`ztgz') )*`vm' )*`p4'/`y' `if'
    replace `w5'= (`d5' + `mutz'*`a5' + (`beta5' + `sbp5'/`atp' + (`l5_1'*`z1')+ (`l5_2'*`z2')+(`l5_3'*`z3') + `a5'*(`gammatz' - 0.5*`ptbp'/(`atp'*`atp') + 0.5*`ztgz') )*`vm' )*`p5'/`y' `if'
    replace `w6'= (`d6' + `mutz'*`a6' + (`beta6' + `sbp6'/`atp' + (`l6_1'*`z1')+ (`l6_2'*`z2')+(`l6_3'*`z3') + `a6'*(`gammatz' - 0.5*`ptbp'/(`atp'*`atp') + 0.5*`ztgz') )*`vm' )*`p6'/`y' `if'
    replace `w7'= (`d7' + `mutz'*`a7' + (`beta7' + `sbp7'/`atp' + (`l7_1'*`z1')+ (`l7_2'*`z2')+(`l7_3'*`z3') + `a7'*(`gammatz' - 0.5*`ptbp'/(`atp'*`atp') + 0.5*`ztgz') )*`vm' )*`p7'/`y' `if'
    replace `w8'= (`d8' + `mutz'*`a8' + (`beta8' + `sbp8'/`atp' + (`l8_1'*`z1')+ (`l8_2'*`z2')+(`l8_3'*`z3') + `a8'*(`gammatz' - 0.5*`ptbp'/(`atp'*`atp') + 0.5*`ztgz') )*`vm' )*`p8'/`y' `if'
    replace `w9'= (`d9' + `mutz'*`a9' + (`beta9' + `sbp9'/`atp' + (`l9_1'*`z1')+ (`l9_2'*`z2')+(`l9_3'*`z3') + `a9'*(`gammatz' - 0.5*`ptbp'/(`atp'*`atp') + 0.5*`ztgz') )*`vm' )*`p9'/`y' `if'
    replace `w9'= (`d9' + `mutz'*`a9' + (`beta9' + `sbp9'/`atp' + (`l9_1'*`z1')+ (`l9_2'*`z2')+(`l9_3'*`z3') + `a9'*(`gammatz' - 0.5*`ptbp'/(`atp'*`atp') + 0.5*`ztgz') )*`vm' )*`p9'/`y' `if'
    *replace `w10'= (`d10' + `mutz'*`a10' + (`beta10' + `sbp10'/`atp' + (`l10_1'*`z1')+ (`l10_2'*`z2')+(`l10_3'*`z3') + `a10'*(`gammatz' - 0.5*`ptbp'/(`atp'*`atp') + 0.5*`ztgz') )*`vm' )*`p10'/`y' `if'
    }
    end


    nlsur sur @ w1 w2 w3 w4 w5 w6 w7 w8 w9 z1 z2 z3 p4 p5 p6 p7 p8 p9 p10 y,/*
    */ parameters (b4_4 b4_5 b4_6 b4_7 b4_8 b4_9 /*
    */ b5_5 b5_6 b5_7 b5_8 b5_9 b6_6 /*
    */ b6_7 b6_8 b6_9 b7_7 b7_8 b7_9 b8_8 b8_9 /*
    */ b9_9 d4 d5 d6 d7 d8 d9 /*
    */ beta4 beta5 beta6 beta7 beta8 beta9 /*
    */ g1_1 g1_2 g1_3 g2_2 g2_3 g3_3 /*
    */ mu1 mu2 mu3 gamma1 gamma2 gamma3 l4_1 l5_1 /*
    */ l6_1 l7_1 l8_1 l9_1 l4_2 l5_2 l6_2 l7_2 l8_2 l9_2 /*
    */ l4_3 l5_3 l6_3 l7_3 l8_3 l9_3 ) neq(9) ifgnls


    Any help?
    Thanks in advance
    Last edited by Racha Ramadan; 01 Dec 2016, 08:10.
Working...
X