Stata The Stata listserver
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

RE: st: RE: Changing beta coefficients - w/ logistic regression


From   "Scott Merryman" <[email protected]>
To   <[email protected]>
Subject   RE: st: RE: Changing beta coefficients - w/ logistic regression
Date   Fri, 22 Jul 2005 05:53:00 -0500

> -----Original Message-----
> From: [email protected] [mailto:owner-
> [email protected]] On Behalf Of Richard Williams
> Sent: Thursday, July 21, 2005 7:19 PM
> To: [email protected]
> Subject: Re: st: RE: Changing beta coefficients - w/ logistic regression
> 
> At 05:33 PM 7/21/2005 -0500, Scott Merryman wrote:
> >Change the program to:
> >
> >program foo2, eclass
> >          tempname bmat
> >          matrix `bmat' = e(b)
> >          matrix b = e(b)
> >          ereturn post b
> >          matrix `bmat'[1,1] = 122
> >          ereturn repost b = `bmat'
> >end
> >
> >This seems to work for both -regress- and -logit-
> >
> >Scott
> 
> I'm surprised the original program doesn't work.  Something to be aware of
> with Scott's solution:  most of the ereturned stuff gets zapped once you
> run foo2.  In particular, since e(predict) gets zapped, the p option on
> predict doesn't work.  You can probably add lines to Scott's program to
> revive the ereturned stuff that gets lost but maybe there is a better
> way.  

Richard,

Thanks.  Nice catch.   I too hope there is a better way.

It is not hard to pick up the ereturned stuff:

program foo2, eclass
 	 local depvar = e(depvar)
 	 local predict = e(predict)
 	 local estat_cmd = e(estat_cmd)
 	 local cmd = e(cmd)
 	 
 	 tempname bmat
       matrix `bmat' = e(b)
       matrix b = e(b)
       ereturn post b
       matrix `bmat'[1,1] = _b[mpg]

       ereturn local predict = "`predict'"
       ereturn local depvar = "`depvar'"
       ereturn local estat_cmd = "`estat_cmd'"
       ereturn local cmd = "`cmd'"
       ereturn repost b = `bmat'
end


Now -predict prob, p- works, in the sense it doesn't return an error, though
it does not calculate the probability but rather the fitted values.  The
probabilities can calculated by using the -invlogit- function, however I am
not sure why -predict prob, p - is not calculating the probabilities.


. qui logit fore mpg

. predict prob1, p

. foo2

. ereturn list

macros:
               e(cmd) : "logit"
         e(estat_cmd) : "logit_estat"
            e(depvar) : "foreign"
           e(predict) : "logit_p"
        e(properties) : "b"

matrices:
                 e(b) :  1 x 2

. predict prob2 , p

. l prob* in 1/2

     +---------------------+
     |    prob1      prob2 |
     |---------------------|
  1. | .2964837   -.864099 |
  2. | .1593718   -1.66291 |
     +---------------------+

. replace prob2 = invlogit(prob2)
(74 real changes made)

. l prob* in 1/2

     +---------------------+
     |    prob1      prob2 |
     |---------------------|
  1. | .2964837   .2964837 |
  2. | .1593718   .1593718 |
     +---------------------+


Scott



*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/



© Copyright 1996–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index