Announcement

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

  • Split parameters estimates in different tables with collect

    Hi everyone, I wish everything is good.

    I have the following nlsur code estimates:

    Code:
    drop _all
    program drop _all
    use https://www.stata-press.com/data/r18/food, clear
    
     program nlsuraids
         version 17.0
         syntax varlist(min=8 max=8) if, at(name)
         tokenize `varlist'
         args w1 w2 w3 lnp1 lnp2 lnp3 lnp4 lnm
         tempname a1 a2 a3 a4
         scalar `a1' = `at'[1,1]
         scalar `a2' = `at'[1,2]
         scalar `a3' = `at'[1,3]
         scalar `a4' = 1- `a1'- `a2'- `a3'
         tempname b1 b2 b3
         scalar `b1' = `at'[1,4]
         scalar `b2' = `at'[1,5]
         scalar `b3' = `at'[1,6]
         tempname g11 g12 g13 g14
         tempname g21 g22 g23 g24
         tempname g31 g32 g33 g34
         tempname g41 g42 g43 g44
         scalar `g11' = `at'[1,7]
         scalar `g12' = `at'[1,8]
         scalar `g13' = `at'[1,9]
         scalar `g14' =-`g11'-`g12'-`g13'
         scalar `g21' = `g12'
         scalar `g22' = `at'[1,10]
         scalar `g23' = `at'[1,11]
         scalar `g24' =-`g21'-`g22'-`g23'
         scalar `g31' = `g13'
         scalar `g32' = `g23'
         scalar `g33' = `at'[1,12]
         scalar `g34' =-`g31'-`g32'-`g33'
         scalar `g41' = `g14'
         scalar `g42' = `g24'
         scalar `g43' = `g34'
         scalar `g44' =-`g41'-`g42'-`g43'
         quietly {
             tempvar lnpindex
             gen double `lnpindex' = 5 + `a1' * `lnp1' + `a2'*`lnp2' + `a3'*`lnp3' + `a4'*`lnp4'
             forvalues i = 1/4 {
                 forvalues j = 1/4 {
                    replace `lnpindex' = `lnpindex' + 0.5*`g`i'`j'' *`lnp`i''*`lnp`j''
             }
         }
         replace `w1' = `a1' + `g11'*`lnp1' + `g12'*`lnp2' + `g13'*`lnp3' + `g14'*`lnp4' + `b1'*(`lnm'- `lnpindex')
         replace `w2' = `a2' + `g21'*`lnp1' + `g22'*`lnp2' + `g23'*`lnp3' + `g24'*`lnp4' + `b2'*(`lnm'- `lnpindex')
         replace `w3' = `a3' + `g31'*`lnp1' + `g32'*`lnp2' + `g33'*`lnp3' + `g34'*`lnp4' + `b3'*(`lnm'- `lnpindex')
         }
     end
    
    nlsur aids @ w1 w2 w3 lnp1 lnp2 lnp3 lnp4 lnexp, ///
                    parameters(a1 a2 a3 b1 b2 b3 g11 g12 g13 g22 g32 g33) neq(3) ifgnls
    I want to show the results in a better design using collect commands:

    Code:
    . qui collect : nlsur aids @ w1 w2 w3 lnp1 lnp2 lnp3 lnp4 lnexp, ///
    >     parameters(a1 a2 a3 b1 b2 b3 g11 g12 g13 g22 g32 g33) neq(3) ifgnls
    
    . collect dims
    
    Collection dimensions
    Collection: default
    -----------------------------------------
                       Dimension   No. levels
    -----------------------------------------
    Layout, style, header, label
                          cmdset   4         
                           coleq   12        
                         colname   46        
                   program_class   2         
                          result   47        
                     result_type   3         
                         rowname   4         
    
    Style only
                    border_block   4         
                       cell_type   4         
    -----------------------------------------
    
    . 
    . collect layout (colname) (result[_r_b _r_p])
    
    Collection: default
          Rows: colname
       Columns: result[_r_b _r_p]
       Table 1: 35 x 2
    
    ---------------------------
          | Coefficient p-value
    ------+--------------------
    a01   |     .014511   0.000
    a02   |    .0083158   0.000
    a03   |    .9771733   0.000
    o1_1  |    .0008832   0.045
    o2_1  |    .0006086   0.113
    o3_1  |    .0010754   0.002
    o4_1  |   -.0040338   0.000
    o5_1  |   -.0020791   0.000
    o6_1  |   -.0016119   0.000
    o7_1  |    .0070374   0.000
    o8_1  |    .0008619   0.001
    o9_1  |   -.0017339   0.000
    o10_1 |   -.0009389   0.000
    o1_2  |    .0048446   0.000
    o2_2  |     .001181   0.016
    o3_2  |    -.003873   0.000
    o4_2  |   -.0023216   0.000
    o5_2  |   -.0044547   0.000
    o6_2  |   -.0010955   0.000
    o7_2  |    .0055788   0.000
    o8_2  |    .0007144   0.000
    o9_2  |   -.0001183   0.518
    o10_2 |   -.0004092   0.000
    o11_1 |   -.0000689   0.000
    o11_2 |   -.0000464   0.000
    g11   |   -.0026987   0.000
    g12   |    .0002518   0.055
    g21   |    .0002518   0.055
    g22   |    .0003642   0.319
    g13   |    .0024468   0.000
    g23   |    -.000616   0.094
    g33   |    .0018308   0.000
    l1    |   -.0002066   0.008
    l2    |   -.0001653   0.001
    l3    |    .0003719   0.000
    ---------------------------
    How can I split the values of the coefficients that begins by a0, o1, o2, ..., o10 and l in one first table with three different columns (one for each equation one, two and three) and the remain coefficients at a second only one column table?

    I appreciate any suggests.

    Have all a great day.
Working...
X