数据由三部分组成,分别是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的结果,也不能求出三组数据合并在一起的结果。
急求解答问题出在哪里了?


雷达卡


京公网安备 11010802022788号







