数据由三部分组成,分别是bid=6、bid=10和bid=50
.ado部分的代码如下:
cap program drop mylogit2_if
program define mylogit2_if
version 12.0
args lnf xb
    
qui replace `lnf' = ln(invlogit(bid0-`xb'))       if $ML_y1 == 1 &  $ML_y2 == 1  
qui replace `lnf' = ln(invlogit(bid1-`xb')-invlogit(bid0-`xb'))     if $ML_y1 == 1 &  $ML_y2 == 0
qui replace `lnf' = ln(invlogit(bid2-`xb')-invlogit(bid1-`xb'))      if $ML_y1 == 0 &  $ML_y2 == 1
qui replace `lnf' = ln(1-invlogit(bid2-`xb'))      if $ML_y1 == 0 &  $ML_y2 == 0  
    
    
/* if bid1=6
qui replace `lnf' = ln(invlogit(1-`xb'))       if $ML_y1 == 1   & bid1==6
qui replace `lnf' = ln(invlogit(6-`xb')-invlogit(1-`xb'))    if $ML_y1 == 3.5 & bid1==6
qui replace `lnf' = ln(invlogit(10-`xb')-invlogit(6-`xb'))      if $ML_y1 == 8   & bid1==6
qui replace `lnf' = ln(1-invlogit(10-`xb'))       if $ML_y1 == 10  & bid1==6
*/
     
/* if bid1=10
qui replace `lnf' = ln(invlogit(6-`xb'))            if $ML_y1 == 6   & bid1 == 10
qui replace `lnf' = ln(invlogit(10-`xb')-invlogit(6-`xb'))     if $ML_y1 == 8   & bid1 == 10
qui replace `lnf' = ln(invlogit(50-`xb')-invlogit(10-`xb'))      if $ML_y1 == 30  & bid1 == 10
qui replace `lnf' = ln(1-invlogit(50-`xb'))        if $ML_y1 == 50  & bid1 == 10
*/
/* if bid1=50
qui replace `lnf' = ln(invlogit(10-`xb'))          if $ML_y1 == 10 & bid1 == 50
qui replace `lnf' = ln(invlogit(50-`xb')-invlogit(10-`xb'))   if $ML_y1 == 30 & bid1 == 50
qui replace `lnf' = ln(invlogit(100-`xb')-invlogit(-`xb'))         if $ML_y1 == 75 & bid1 == 50
qui replace `lnf' = ln(1-invlogit(100-`xb'))     if $ML_y1 == 100 & bid1 == 50 */
 end
出现的问题是,只能求出bid=6(ml model lf mylogit2_if (firstask secondask=x1sex x2age x3edu x4inc x5pat x6times x7pro x8will) if bid1==6     ml max)时的结果,不能求出bid=10及50的结果,也不能求出三组数据合并在一起的结果。
急求解答问题出在哪里了?