Announcement

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

  • Iteration with nlcom and "expression too long" message

    Hallo! I am trying to implement the following program to obtain iterated nonlinear combinations of estimated parameters along with their bootstrap standard errors. I need 20 iterations, however after 10 i get the "expression too long" error message. I am aware of the problem (I read related discussions here in statalist) and I see that my routine is all but efficient. But after several trials I did not get the solution. Anybody can kindly help me out? Many thanks!

    use data.dta, clear

    program define iterpro, rclass
    reg y x z
    local b0=1
    local b1 "(_b[x]*`b0' + _b[z]*`b0')"
    local b2 "(_b[x]*`b1' + _b[z]*`b0')"
    local b3 "(_b[x]*`b2'+_b[z]*`b1')"
    local b4 "(_b[x]*`b3'+_b[z]*`b2')"
    local b5 "(_b[x]*`b4'+_b[z]*`b3')"
    local b6 "(_b[x]*`b5'+_b[z]*`b4')"
    local b7 "(_b[x]*`b6'+_b[z]*`b5')"
    local b8 "(_b[x]*`b7'+_b[z]*`b6')"
    local b9 "(_b[x]*`b8'+_b[z]*`b7')"
    local b10 "(_b[x]*`b9'+_b[z]*`b8')"

    nlcom (a1: _b[x]*`b10') (a2:_b[z]*`b9'), post
    nlcom (b11: _b[a1] + _b[a2])

    tempname b
    matrix `b' = r(b)
    return scalar beta = `b'[1,1]
    exit
    end

    bootstrap r(beta), reps(10) seed(1234): iterpro
    estat bootstrap

  • #2
    You need to present a data example that replicates the error to increase your chances of getting a helpful response.

    Comment


    • #3
      Thanks for the suggestion. The following routine with the attached dataset gives the error, for instance. Whereas if you stop at "local b10" as in the first message it works.

      use data.dta, clear

      program define iterpro, rclass

      reg y x z, r
      local b0=1
      local b1 "(_b[x]*`b0' + _b[z]*`b0')"
      local b2 "(_b[x]*`b1' + _b[z]*`b0')"
      local b3 "(_b[x]*`b2'+_b[z]*`b1')"
      local b4 "(_b[x]*`b3'+_b[z]*`b2')"
      local b5 "(_b[x]*`b4'+_b[z]*`b3')"
      local b6 "(_b[x]*`b5'+_b[z]*`b4')"
      local b7 "(_b[x]*`b6'+_b[z]*`b5')"
      local b8 "(_b[x]*`b7'+_b[z]*`b6')"
      local b9 "(_b[x]*`b8'+_b[z]*`b7')"
      local b10 "(_b[x]*`b9'+_b[z]*`b8')"
      local b11 "(_b[x]*`b10'+_b[z]*`b9')"
      nlcom (a1: _b[x]*`b11') (a2:_b[z]*`b10'), post
      nlcom (b12: _b[a1] + _b[a2])

      tempname b
      matrix `b' = r(b)
      return scalar beta = `b'[1,1]
      exit
      end

      bootstrap r(beta), reps(10) seed(1234): iterpro
      estat bootstrap
      program drop iterpro
      Attached Files
      Last edited by Giorgia Estefani; 09 Dec 2022, 07:14.

      Comment


      • #4
        I am thinking that you need to drop the program and redefine it every time you run it. The highlighted below is a common line for programs that are run interactively.

        Code:
        clear all
        use "data.dta"
        
        capture program drop iterpro
        program define iterpro, rclass
        reg y x z
        local b0=1
        local b1 "(_b[x]*`b0' + _b[z]*`b0')"
        local b2 "(_b[x]*`b1' + _b[z]*`b0')"
        local b3 "(_b[x]*`b2'+_b[z]*`b1')"
        local b4 "(_b[x]*`b3'+_b[z]*`b2')"
        local b5 "(_b[x]*`b4'+_b[z]*`b3')"
        local b6 "(_b[x]*`b5'+_b[z]*`b4')"
        local b7 "(_b[x]*`b6'+_b[z]*`b5')"
        local b8 "(_b[x]*`b7'+_b[z]*`b6')"
        local b9 "(_b[x]*`b8'+_b[z]*`b7')"
        local b10 "(_b[x]*`b9'+_b[z]*`b8')"
        
        nlcom (a1: _b[x]*`b10') (a2:_b[z]*`b9'), post
        nlcom (b11: _b[a1] + _b[a2])
        
        tempname b
        matrix `b' = r(b)
        return scalar beta = `b'[1,1]
        exit
        end
        
        bootstrap r(beta), reps(20) seed(1234): iterpro
        estat bootstrap
        Res.:

        Code:
        . bootstrap r(beta), reps(20) seed(1234): iterpro
        (running iterpro on estimation sample)
        
        Bootstrap replications (20)
        ----+--- 1 ---+--- 2 ---+--- 3 ---+--- 4 ---+--- 5
        ....................
        
        Bootstrap results                               Number of obs     =        222
                                                        Replications      =         20
        
              command:  iterpro
                _bs_1:  r(beta)
        
        ------------------------------------------------------------------------------
                     |   Observed   Bootstrap                         Normal-based
                     |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
        -------------+----------------------------------------------------------------
               _bs_1 |   .0062896   .0120174     0.52   0.601    -.0172641    .0298432
        ------------------------------------------------------------------------------
        
        . estat bootstrap
        
        Bootstrap results                               Number of obs     =        222
                                                        Replications      =         20
        
              command:  iterpro
                _bs_1:  r(beta)
        
        ------------------------------------------------------------------------------
                     |    Observed               Bootstrap
                     |       Coef.       Bias    Std. Err.  [95% Conf. Interval]
        -------------+----------------------------------------------------------------
               _bs_1 |   .00628956   .0018723   .01201739    .0012225    .047862  (BC)
        ------------------------------------------------------------------------------
        (BC)   bias-corrected confidence interval
        
        .
        end of do-file

        Comment


        • #5
          Many thanks Andrew, yes I did delete the program at the and of the file. But, you see, if you use one more iteration, as I write below, you get the error message. I think I need to split the nonlinear combinations somehow...

          clear all
          use "data.dta"

          program define iterpro, rclass
          reg y x z
          local b0=1
          local b1 "(_b[x]*`b0' + _b[z]*`b0')"
          local b2 "(_b[x]*`b1' + _b[z]*`b0')"
          local b3 "(_b[x]*`b2'+_b[z]*`b1')"
          local b4 "(_b[x]*`b3'+_b[z]*`b2')"
          local b5 "(_b[x]*`b4'+_b[z]*`b3')"
          local b6 "(_b[x]*`b5'+_b[z]*`b4')"
          local b7 "(_b[x]*`b6'+_b[z]*`b5')"
          local b8 "(_b[x]*`b7'+_b[z]*`b6')"
          local b9 "(_b[x]*`b8'+_b[z]*`b7')"
          local b10 "(_b[x]*`b9'+_b[z]*`b8')"
          local b11 "(_b[x]*`b10'+_b[z]*`b9')"
          nlcom (a1: _b[x]*`b11') (a2:_b[z]*`b10'), post
          nlcom (b12: _b[a1] + _b[a2])

          tempname b
          matrix `b' = r(b)
          return scalar beta = `b'[1,1]
          exit
          end

          bootstrap r(beta), reps(20) seed(1234): iterpro
          estat bootstrap

          program drop iterpro

          Comment


          • #6
            I need to understand what the program is doing, because part of the expression you need to evaluate, stored in the local b11 is below and is indeed too long. Is this what you expect?

            Code:
            use "data.dta", clear
            reg y x z
            local b0=1
            local b1 "(_b[x]*`b0' + _b[z]*`b0')"
            local b2 "(_b[x]*`b1' + _b[z]*`b0')"
            local b3 "(_b[x]*`b2'+_b[z]*`b1')"
            local b4 "(_b[x]*`b3'+_b[z]*`b2')"
            local b5 "(_b[x]*`b4'+_b[z]*`b3')"
            local b6 "(_b[x]*`b5'+_b[z]*`b4')"
            local b7 "(_b[x]*`b6'+_b[z]*`b5')"
            local b8 "(_b[x]*`b7'+_b[z]*`b6')"
            local b9 "(_b[x]*`b8'+_b[z]*`b7')"
            local b10 "(_b[x]*`b9'+_b[z]*`b8')"
            local b11 "(_b[x]*`b10'+_b[z]*`b9')"
            
            di "`b11'"
            Res.:

            Code:
             di "`b11'"
            (_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(
            > _b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b
            > [x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x
            > ]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) +
            > _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[
            > z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1)))+_b[z]*(_b[x]*(_b[x]
            > *(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))))+_b[z]*(_b[x]*(_b[x]*(_b[x]*
            > (_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b
            > [x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b
            > [z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z
            > ]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1)))))+_b[z]*(_
            > b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) +
            > _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b
            > [z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z
            > ]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]
            > *1 + _b[z]*1))))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 +
            > _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b
            > [z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)))))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]
            > *(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_
            > b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1)
            > )+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+
            > _b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))))+_b[z]*(_b[x]*(_
            > b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x
            > ]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1
            >  + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_
            > b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _
            > b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)))
            > +_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b
            > [z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))))))

            Comment


            • #7
              So margins allows a longer expression, so you can work with this and modify the program accordingly.

              Code:
              use "data.dta", clear
              reg y x z
              local b0=1
              local b1 "(_b[x]*`b0' + _b[z]*`b0')"
              local b2 "(_b[x]*`b1' + _b[z]*`b0')"
              local b3 "(_b[x]*`b2'+_b[z]*`b1')"
              local b4 "(_b[x]*`b3'+_b[z]*`b2')"
              local b5 "(_b[x]*`b4'+_b[z]*`b3')"
              local b6 "(_b[x]*`b5'+_b[z]*`b4')"
              local b7 "(_b[x]*`b6'+_b[z]*`b5')"
              local b8 "(_b[x]*`b7'+_b[z]*`b6')"
              local b9 "(_b[x]*`b8'+_b[z]*`b7')"
              local b10 "(_b[x]*`b9'+_b[z]*`b8')"
              local b11 "(_b[x]*`b10'+_b[z]*`b9')"
              *margins, expression((_b[x]*`b11')+ (_b[z]*`b10')) post
              margins, expression((_b[x]*`b11'))
              margins, expression((_b[z]*`b10'))
              Res.:

              Code:
              . margins, expression((_b[x]*`b11'))
              Warning: expression() does not contain predict() or xb().
              Warning: prediction constant over observations.
              
              Predictive margins                              Number of obs     =        222
              Model VCE    : OLS
              
              Expression   : (_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 +
                             _b[z]*1) + _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 +
                             _b[z]*1) + _b[z]*1))))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 +
                             _b[z]*1) + _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1)))))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 +
                             _b[z]*1) + _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 +
                             _b[z]*1) + _b[z]*1)))))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) +
                             _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) +
                             _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) +
                             _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) +
                             _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1
                             + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 +
                             _b[z]*1) + _b[z]*1))))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 +
                             _b[z]*1) + _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1)))))))
              
              ------------------------------------------------------------------------------
                           |            Delta-method
                           |     Margin   Std. Err.      z    P>|z|     [95% Conf. Interval]
              -------------+----------------------------------------------------------------
                     _cons |   .0016015   .0023005     0.70   0.486    -.0029075    .0061104
              ------------------------------------------------------------------------------
              
              .
              . margins, expression((_b[z]*`b10'))
              Warning: expression() does not contain predict() or xb().
              Warning: prediction constant over observations.
              
              Predictive margins                              Number of obs     =        222
              Model VCE    : OLS
              
              Expression   : (_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 +
                             _b[z]*1) + _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 +
                             _b[z]*1) + _b[z]*1))))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 +
                             _b[z]*1) + _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1)))))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 +
                             _b[z]*1) + _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 +
                             _b[z]*1)))+_b[z]*(_b[x]*(_b[x]*(_b[x]*(_b[x]*1 + _b[z]*1) + _b[z]*1)+_b[z]*(_b[x]*1 + _b[z]*1))+_b[z]*(_b[x]*(_b[x]*1 +
                             _b[z]*1) + _b[z]*1))))))
              
              ------------------------------------------------------------------------------
                           |            Delta-method
                           |     Margin   Std. Err.      z    P>|z|     [95% Conf. Interval]
              -------------+----------------------------------------------------------------
                     _cons |   .0024227   .0038077     0.64   0.525    -.0050403    .0098856
              ------------------------------------------------------------------------------

              Comment


              • #8
                Many thanks for your time, Andrew! You are really kind. I don't know why but your program does not work with me. I still get the message:

                ". margins, expression((_b[x]*`b11'))
                Warning: expression() does not contain predict() or xb().
                expression too long"

                For completeness, what I expect is an autoregressive process (with t=20) such that:

                b(t)=b(t-1)*beta(1)+b(t-2)*beta(2) with b(0)=1 and b(1)=1, and where beta(1) and beta(2) are the estimated coefficients, on respectively x and z, of the regression y x z.

                For this parameter I also need the boostrap standard error.

                Many thanks again.

                Comment


                • #9
                  Many thanks for your time, Andrew! You are really kind. I don't know why but your program does not work with me. I still get the message:

                  ". margins, expression((_b[x]*`b11'))
                  Warning: expression() does not contain predict() or xb().
                  expression too long"

                  For completeness, what I expect is an autoregressive process (with t=20) such that:

                  b(t)=b(t-1)*beta(1)+b(t-2)*beta(2) with b(0)=1 and b(1)=1, and where beta(1) and beta(2) are the estimated coefficients, on respectively x and z, of the regression y x z.

                  For this parameter I also need the bootstrap standard errors.

                  Many thanks again.
                  Last edited by Giorgia Estefani; 09 Dec 2022, 12:58.

                  Comment


                  • #10
                    I got time to examine your code in #1 and now I see that you do not use the nlcom standard errors. Therefore, just evaluate the expression at the point you define the local, and you can run your bootstrap program without any problems.

                    Code:
                    clear all
                    use "data.dta"
                    
                    program define iterpro, rclass
                    reg y x z
                    local b0=1
                    local b1 "(_b[x]*`b0' + _b[z]*`b0')"
                    local b2 "(_b[x]*`b1' + _b[z]*`b0')"
                    local b3 "(_b[x]*`b2'+_b[z]*`b1')"
                    local b4 "(_b[x]*`b3'+_b[z]*`b2')"
                    local b5 "(_b[x]*`b4'+_b[z]*`b3')"
                    local b6 "(_b[x]*`b5'+_b[z]*`b4')"
                    local b7 "(_b[x]*`b6'+_b[z]*`b5')"
                    local b8 "(_b[x]*`b7'+_b[z]*`b6')"
                    local b9 "(_b[x]*`b8'+_b[z]*`b7')"
                    local b10 "`=(_b[x]*`b9'+_b[z]*`b8')'"
                    local b11 "`=(_b[x]*`b10'+_b[z]*`b9')'"
                    nlcom (a1: _b[x]*`b11') (a2:_b[z]*`b10'), post
                    nlcom (b12: _b[a1] + _b[a2])
                    
                    tempname b
                    matrix `b' = r(b)
                    return scalar beta = `b'[1,1]
                    exit
                    end
                    
                    bootstrap r(beta), reps(20) seed(1234): iterpro
                    estat bootstrap
                    Res.:

                    Code:
                    . bootstrap r(beta), reps(20) seed(1234): iterpro
                    (running iterpro on estimation sample)
                    
                    Bootstrap replications (20)
                    ----+--- 1 ---+--- 2 ---+--- 3 ---+--- 4 ---+--- 5
                    ....................
                    
                    Bootstrap results                               Number of obs     =        222
                                                                    Replications      =         20
                    
                          command:  iterpro
                            _bs_1:  r(beta)
                    
                    ------------------------------------------------------------------------------
                                 |   Observed   Bootstrap                         Normal-based
                                 |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
                    -------------+----------------------------------------------------------------
                           _bs_1 |   .0040242   .0091904     0.44   0.661    -.0139887     .022037
                    ------------------------------------------------------------------------------
                    
                    .
                    . estat bootstrap
                    
                    Bootstrap results                               Number of obs     =        222
                                                                    Replications      =         20
                    
                          command:  iterpro
                            _bs_1:  r(beta)
                    
                    ------------------------------------------------------------------------------
                                 |    Observed               Bootstrap
                                 |       Coef.       Bias    Std. Err.  [95% Conf. Interval]
                    -------------+----------------------------------------------------------------
                           _bs_1 |   .00402416   .0016969   .00919041    .0006708   .0367184  (BC)
                    ------------------------------------------------------------------------------
                    (BC)   bias-corrected confidence interval
                    
                    .
                    Last edited by Andrew Musau; 09 Dec 2022, 18:28.

                    Comment


                    • #11
                      It works! Thanks Andrew: very generous help from you as always. Have a nice day.

                      Comment

                      Working...
                      X