|
|
楼主

楼主 |
发表于 2010-10-22 13:24:12
|
只看该作者
SAS MACRO TO CALCULATE PDO (Points to Double Odds) OF A SCOR
From Wensui Liu's blog
<font size="2"><span style="background-color:#ffffff"><font color="#0000ff">%macro</font></span> get_pdo(<span style="background-color:#ffffff"><font color="#000080"><b>data</b></font></span> = , score = , y = , wt = NONE, ref_score = , target_odds = , target_pdo = );<br /><span style="background-color:#ffffff"><font color="#008000">**********************************************************************;</font></span><br /><span style="background-color:#ffffff"><font color="#008000">* THIS MACRO IS TO CALCULATE OBSERVED ODDS AND PDO FOR ANY SCORECARD *;</font></span><br /><span style="background-color:#ffffff"><font color="#008000">* AND COMPUTE ALIGNMENT BETAS TO REACH TARGET ODDS AND PDO *;</font></span><br /><span style="background-color:#ffffff"><font color="#008000">* ------------------------------------------------------------------ *;</font></span><br /><span style="background-color:#ffffff"><font color="#008000">* PARAMETERS: *;</font></span><br /><span style="background-color:#ffffff"><font color="#008000">* DATA : INPUT DATASET *;</font></span><br /><span style="background-color:#ffffff"><font color="#008000">* SCORE : SCORECARD VARIABLE *;</font></span><br /><span style="background-color:#ffffff"><font color="#008000">* Y : RESPONSE VARIABLE IN (0, 1) *;</font></span><br /><span style="background-color:#ffffff"><font color="#008000">* WT : WEIGHT VARIABLE IN POSITIVE INTEGER *;</font></span><br /><span style="background-color:#ffffff"><font color="#008000">* REF_SCORE : REFERENCE SCORE POINT FOR TARGET ODDS AND PDO *;</font></span><br /><span style="background-color:#ffffff"><font color="#008000">* TARGET_ODDS: TARGET ODDS AT REFERENCE SCORE OF SCORECARD *;</font></span><br /><span style="background-color:#ffffff"><font color="#008000">* TARGET_PDO : TARGET POINTS TO DOUBLE ODDS OF SCARECARD *;</font></span> <br /><span style="background-color:#ffffff"><font color="#008000">* ------------------------------------------------------------------ *;</font></span><br /><span style="background-color:#ffffff"><font color="#008000">* OUTPUTS: *;</font></span><br /><span style="background-color:#ffffff"><font color="#008000">* REPORT : PDO REPORT WITH THE CALIBRATION FORMULA IN HTML FORMAT *;</font></span><br /><span style="background-color:#ffffff"><font color="#008000">* ------------------------------------------------------------------ *;</font></span><br /><span style="background-color:#ffffff"><font color="#008000">* AUTHOR: <!-- e --><a href="mailto:WENSLIU@PAYPAL.COM">WENSLIU@PAYPAL.COM</a><!-- e --> *;</font></span><br /><span style="background-color:#ffffff"><font color="#008000">**********************************************************************;</font></span><br /><br /><span style="background-color:#ffffff"><font color="#0000ff">options</font></span> nonumber nodate orientation = landscape nocenter; <br /><br /><span style="background-color:#ffffff"><font color="#008000">*** CHECK IF THERE IS WEIGHT VARIABLE ***;</font></span><br /><span style="background-color:#ffffff"><font color="#0000ff">%if</font></span> <span style="background-color:#ffffff"><font color="#0000ff">%upcase</font></span>(<font color="#0000ff"><b>&wt</b></font>) = NONE <span style="background-color:#ffffff"><font color="#0000ff">%then</font></span> <span style="background-color:#ffffff"><font color="#0000ff">%do</font></span>;<br /> <span style="background-color:#ffffff"><font color="#000080"><b>data</b></font></span> _tmp1 (<span style="background-color:#ffffff"><font color="#0000ff">keep</font></span> = <font color="#0000ff"><b>&y</b></font> <font color="#0000ff"><b>&score</b></font> _wt);<br /> <span style="background-color:#ffffff"><font color="#0000ff">set</font></span> <font color="#0000ff"><b>&data</b></font>;<br /> <span style="background-color:#ffffff"><font color="#0000ff">where</font></span> <font color="#0000ff"><b>&y</b></font> <span style="background-color:#ffffff"><font color="#0000ff">in</font></span> (<span style="background-color:#ffffff"><font color="#2e8b57"><b>1</b></font></span>, <span style="background-color:#ffffff"><font color="#2e8b57"><b>0</b></font></span>) <span style="background-color:#ffffff"><font color="#0000ff">and</font></span><br /> <font color="#0000ff"><b>&score</b></font> ~= .;<br /> _wt = <span style="background-color:#ffffff"><font color="#2e8b57"><b>1</b></font></span>;<br /> <font color="#0000ff"><b>&score</b></font> = <span style="background-color:#ffffff"><font color="#0000ff">round</font></span>(<font color="#0000ff"><b>&score</b></font>., <span style="background-color:#ffffff"><font color="#2e8b57"><b>1</b></font></span>);<br /> <span style="background-color:#ffffff"><font color="#000080"><b>run</b></font></span>;<br /><span style="background-color:#ffffff"><font color="#0000ff">%end</font></span>;<br /><span style="background-color:#ffffff"><font color="#0000ff">%else</font></span> <span style="background-color:#ffffff"><font color="#0000ff">%do</font></span>;<br /> <span style="background-color:#ffffff"><font color="#000080"><b>data</b></font></span> _tmp1 (<span style="background-color:#ffffff"><font color="#0000ff">keep</font></span> = <font color="#0000ff"><b>&y</b></font> <font color="#0000ff"><b>&score</b></font> _wt);<br /> <span style="background-color:#ffffff"><font color="#0000ff">set</font></span> <font color="#0000ff"><b>&data</b></font>;<br /> <span style="background-color:#ffffff"><font color="#0000ff">where</font></span> <font color="#0000ff"><b>&y</b></font> <span style="background-color:#ffffff"><font color="#0000ff">in</font></span> (<span style="background-color:#ffffff"><font color="#2e8b57"><b>1</b></font></span>, <span style="background-color:#ffffff"><font color="#2e8b57"><b>0</b></font></span>) <span style="background-color:#ffffff"><font color="#0000ff">and</font></span><br /> <font color="#0000ff"><b>&score</b></font> ~= . <span style="background-color:#ffffff"><font color="#0000ff">and</font></span><br /> <span style="background-color:#ffffff"><font color="#0000ff">round</font></span>(<font color="#0000ff"><b>&wt</b></font>., <span style="background-color:#ffffff"><font color="#2e8b57"><b>1</b></font></span>) > <span style="background-color:#ffffff"><font color="#2e8b57"><b>0</b></font></span>;<br /> _wt = <span style="background-color:#ffffff"><font color="#0000ff">round</font></span>(<font color="#0000ff"><b>&wt</b></font>., <span style="background-color:#ffffff"><font color="#2e8b57"><b>1</b></font></span>);<br /> <font color="#0000ff"><b>&score</b></font> = <span style="background-color:#ffffff"><font color="#0000ff">round</font></span>(<font color="#0000ff"><b>&score</b></font>., <span style="background-color:#ffffff"><font color="#2e8b57"><b>1</b></font></span>);<br /> <span style="background-color:#ffffff"><font color="#000080"><b>run</b></font></span>;<br /><span style="background-color:#ffffff"><font color="#0000ff">%end</font></span>;<br /><br /><span style="background-color:#ffffff"><font color="#000080"><b>proc logistic</b></font></span> <span style="background-color:#ffffff"><font color="#000080"><b>data</b></font></span> = _tmp1 desc outest = _est1 noprint;<br /> model <font color="#0000ff"><b>&y</b></font> = <font color="#0000ff"><b>&score</b></font>;<br /> freq _wt;<br /><span style="background-color:#ffffff"><font color="#000080"><b>run</b></font></span>;<br /><br /><span style="background-color:#ffffff"><font color="#000080"><b>proc sql</b></font></span> noprint;<br /> <span style="background-color:#ffffff"><font color="#0000ff">select</font></span> <span style="background-color:#ffffff"><font color="#0000ff">round</font></span>(<span style="background-color:#ffffff"><font color="#0000ff">min</font></span>(<font color="#0000ff"><b>&score</b></font>), <span style="background-color:#ffffff"><font color="#2e8b57"><b>0</b></font></span>.<span style="background-color:#ffffff"><font color="#2e8b57"><b>01</b></font></span>) <span style="background-color:#ffffff"><font color="#0000ff">into</font></span> :min_score <span style="background-color:#ffffff"><font color="#0000ff">from</font></span> _tmp1;<br /><br /> <span style="background-color:#ffffff"><font color="#0000ff">select</font></span> <span style="background-color:#ffffff"><font color="#0000ff">round</font></span>(<span style="background-color:#ffffff"><font color="#0000ff">max</font></span>(<font color="#0000ff"><b>&score</b></font>), <span style="background-color:#ffffff"><font color="#2e8b57"><b>0</b></font></span>.<span style="background-color:#ffffff"><font color="#2e8b57"><b>01</b></font></span>) <span style="background-color:#ffffff"><font color="#0000ff">into</font></span> :max_score <span style="background-color:#ffffff"><font color="#0000ff">from</font></span> _tmp1;<br /><span style="background-color:#ffffff"><font color="#000080"><b>quit</b></font></span>;<br /><br /><span style="background-color:#ffffff"><font color="#000080"><b>data</b></font></span> _est2;<br /> <span style="background-color:#ffffff"><font color="#0000ff">set</font></span> _est1 (<span style="background-color:#ffffff"><font color="#0000ff">keep</font></span> = intercept <font color="#0000ff"><b>&score</b></font> <span style="background-color:#ffffff"><font color="#0000ff">rename</font></span> = (<font color="#0000ff"><b>&score</b></font> = slope));<br /><br /> adjust_beta0 = <font color="#0000ff"><b>&ref_score</b></font> - (<font color="#0000ff"><b>&target_pdo</b></font> * <span style="background-color:#ffffff"><font color="#0000ff">log</font></span>(<font color="#0000ff"><b>&target_odds</b></font>) / <span style="background-color:#ffffff"><font color="#0000ff">log</font></span>(<span style="background-color:#ffffff"><font color="#2e8b57"><b>2</b></font></span>)) - intercept * <font color="#0000ff"><b>&target_pdo</b></font> / <span style="background-color:#ffffff"><font color="#0000ff">log</font></span>(<span style="background-color:#ffffff"><font color="#2e8b57"><b>2</b></font></span>);<br /> adjust_beta1 = <span style="background-color:#ffffff"><font color="#2e8b57"><b>-1</b></font></span> * (<font color="#0000ff"><b>&target_pdo</b></font> * slope / <span style="background-color:#ffffff"><font color="#0000ff">log</font></span>(<span style="background-color:#ffffff"><font color="#2e8b57"><b>2</b></font></span>));<br /><br /> <span style="background-color:#ffffff"><font color="#0000ff">do</font></span> i = <span style="background-color:#ffffff"><font color="#2e8b57"><b>-5</b></font></span> to <span style="background-color:#ffffff"><font color="#2e8b57"><b>5</b></font></span>;<br /> old_pdo = <span style="background-color:#ffffff"><font color="#0000ff">round</font></span>(-<span style="background-color:#ffffff"><font color="#0000ff">log</font></span>(<span style="background-color:#ffffff"><font color="#2e8b57"><b>2</b></font></span>) / slope, <span style="background-color:#ffffff"><font color="#2e8b57"><b>0</b></font></span>.<span style="background-color:#ffffff"><font color="#2e8b57"><b>01</b></font></span>);<br /> old_ref = <font color="#0000ff"><b>&ref_score</b></font> + (i) * old_pdo;<br /> old_odd = <span style="background-color:#ffffff"><font color="#0000ff">exp</font></span>(-(slope * old_ref + intercept)); <br /> <span style="background-color:#ffffff"><font color="#0000ff">if</font></span> old_ref >= <font color="#0000ff"><b>&min_score</b></font> <span style="background-color:#ffffff"><font color="#0000ff">and</font></span> old_ref <= <font color="#0000ff"><b>&max_score</b></font> <span style="background-color:#ffffff"><font color="#0000ff">then</font></span> <span style="background-color:#ffffff"><font color="#0000ff">output</font></span>; <br /> <span style="background-color:#ffffff"><font color="#0000ff">end</font></span>;<br /><span style="background-color:#ffffff"><font color="#000080"><b>run</b></font></span>;<br /><br /><span style="background-color:#ffffff"><font color="#000080"><b>data</b></font></span> _tmp2;<br /> <span style="background-color:#ffffff"><font color="#0000ff">set</font></span> _tmp1;<br /> <br /> <span style="background-color:#ffffff"><font color="#0000ff">if</font></span> <font color="#a020f0">_n_</font> = <span style="background-color:#ffffff"><font color="#2e8b57"><b>1</b></font></span> <span style="background-color:#ffffff"><font color="#0000ff">then</font></span> <span style="background-color:#ffffff"><font color="#0000ff">do</font></span>;<br /> <span style="background-color:#ffffff"><font color="#0000ff">set</font></span> _est2(obs = <span style="background-color:#ffffff"><font color="#2e8b57"><b>1</b></font></span>);<br /> <span style="background-color:#ffffff"><font color="#0000ff">end</font></span>;<br /><br /> adjusted = adjust_beta0 + adjust_beta1 * <font color="#0000ff"><b>&score</b></font>;<br /><span style="background-color:#ffffff"><font color="#000080"><b>run</b></font></span>;<br /><br /><span style="background-color:#ffffff"><font color="#000080"><b>proc logistic</b></font></span> <span style="background-color:#ffffff"><font color="#000080"><b>data</b></font></span> = _tmp2 desc noprint outest = _est3;<br /> model <font color="#0000ff"><b>&y</b></font> = adjusted;<br /> freq _wt;<br /><span style="background-color:#ffffff"><font color="#000080"><b>run</b></font></span>;<br /><br /><span style="background-color:#ffffff"><font color="#000080"><b>data</b></font></span> _est4;<br /> <span style="background-color:#ffffff"><font color="#0000ff">set</font></span> _est3 (<span style="background-color:#ffffff"><font color="#0000ff">keep</font></span> = intercept adjusted <span style="background-color:#ffffff"><font color="#0000ff">rename</font></span> = (adjusted = slope));<br /><br /> adjust_beta0 = <font color="#0000ff"><b>&ref_score</b></font> - (<font color="#0000ff"><b>&target_pdo</b></font> * <span style="background-color:#ffffff"><font color="#0000ff">log</font></span>(<font color="#0000ff"><b>&target_odds</b></font>) / <span style="background-color:#ffffff"><font color="#0000ff">log</font></span>(<span style="background-color:#ffffff"><font color="#2e8b57"><b>2</b></font></span>)) - intercept * <font color="#0000ff"><b>&target_pdo</b></font> / <span style="background-color:#ffffff"><font color="#0000ff">log</font></span>(<span style="background-color:#ffffff"><font color="#2e8b57"><b>2</b></font></span>);<br /> adjust_beta1 = <span style="background-color:#ffffff"><font color="#2e8b57"><b>-1</b></font></span> * (<font color="#0000ff"><b>&target_pdo</b></font> * slope / <span style="background-color:#ffffff"><font color="#0000ff">log</font></span>(<span style="background-color:#ffffff"><font color="#2e8b57"><b>2</b></font></span>));<br /><br /> <span style="background-color:#ffffff"><font color="#0000ff">do</font></span> i = <span style="background-color:#ffffff"><font color="#2e8b57"><b>-5</b></font></span> to <span style="background-color:#ffffff"><font color="#2e8b57"><b>5</b></font></span>;<br /> new_pdo = <span style="background-color:#ffffff"><font color="#0000ff">round</font></span>(-<span style="background-color:#ffffff"><font color="#0000ff">log</font></span>(<span style="background-color:#ffffff"><font color="#2e8b57"><b>2</b></font></span>) / slope, <span style="background-color:#ffffff"><font color="#2e8b57"><b>0</b></font></span>.<span style="background-color:#ffffff"><font color="#2e8b57"><b>01</b></font></span>);<br /> new_ref = <font color="#0000ff"><b>&ref_score</b></font> + (i) * new_pdo;<br /> new_odd = <span style="background-color:#ffffff"><font color="#0000ff">exp</font></span>(-(slope * new_ref + intercept)); <br /> <span style="background-color:#ffffff"><font color="#0000ff">if</font></span> new_ref >= <font color="#0000ff"><b>&min_score</b></font> <span style="background-color:#ffffff"><font color="#0000ff">and</font></span> new_ref <= <font color="#0000ff"><b>&max_score</b></font> <span style="background-color:#ffffff"><font color="#0000ff">then</font></span> <span style="background-color:#ffffff"><font color="#0000ff">output</font></span>;<br /> <span style="background-color:#ffffff"><font color="#0000ff">end</font></span>;<br /><span style="background-color:#ffffff"><font color="#000080"><b>run</b></font></span>;<br /> <br /><span style="background-color:#ffffff"><font color="#000080"><b>proc sql</b></font></span> noprint;<br /><span style="background-color:#ffffff"><font color="#0000ff">create</font></span> <span style="background-color:#ffffff"><font color="#0000ff">table</font></span><br /> _final <span style="background-color:#ffffff"><font color="#0000ff">as</font></span><br /><span style="background-color:#ffffff"><font color="#0000ff">select</font></span><br /> <font color="#0000ff"><b>&target_pdo</b></font> <span style="background-color:#ffffff"><font color="#0000ff">as</font></span> target_pdo,<br /> <font color="#0000ff"><b>&target_odds</b></font> <span style="background-color:#ffffff"><font color="#0000ff">as</font></span> target_odds, <br /> a.old_pdo <span style="background-color:#ffffff"><font color="#0000ff">as</font></span> pdo1,<br /> a.old_ref <span style="background-color:#ffffff"><font color="#0000ff">as</font></span> ref1,<br /> a.old_odd <span style="background-color:#ffffff"><font color="#0000ff">as</font></span> odd1,<br /> <span style="background-color:#ffffff"><font color="#0000ff">log</font></span>(a.old_odd) <span style="background-color:#ffffff"><font color="#0000ff">as</font></span> ln_odd1,<br /> a.adjust_beta0 <span style="background-color:#ffffff"><font color="#0000ff">as</font></span> adjust_beta0, <br /> a.adjust_beta1 <span style="background-color:#ffffff"><font color="#0000ff">as</font></span> adjust_beta1,<br /> b.new_pdo <span style="background-color:#ffffff"><font color="#0000ff">as</font></span> pdo2,<br /> b.new_ref <span style="background-color:#ffffff"><font color="#0000ff">as</font></span> ref2,<br /> b.new_odd <span style="background-color:#ffffff"><font color="#0000ff">as</font></span> odd2,<br /> <span style="background-color:#ffffff"><font color="#0000ff">log</font></span>(b.new_odd) <span style="background-color:#ffffff"><font color="#0000ff">as</font></span> ln_odd2<br /><span style="background-color:#ffffff"><font color="#0000ff">from</font></span><br /> _est2 <span style="background-color:#ffffff"><font color="#0000ff">as</font></span> a inner join _est4 <span style="background-color:#ffffff"><font color="#0000ff">as</font></span> b<br /><span style="background-color:#ffffff"><font color="#0000ff">on</font></span><br /> a.i = b.i;<br /><br /><span style="background-color:#ffffff"><font color="#0000ff">select</font></span> <span style="background-color:#ffffff"><font color="#0000ff">round</font></span>(pdo1, <span style="background-color:#ffffff"><font color="#2e8b57"><b>1</b></font></span>) <span style="background-color:#ffffff"><font color="#0000ff">into</font></span> :pdo1 <span style="background-color:#ffffff"><font color="#0000ff">from</font></span> _final;<br /><br /><span style="background-color:#ffffff"><font color="#0000ff">select</font></span> <span style="background-color:#ffffff"><font color="#0000ff">put</font></span>(<span style="background-color:#ffffff"><font color="#0000ff">max</font></span>(pdo1 / pdo2 - <span style="background-color:#ffffff"><font color="#2e8b57"><b>1</b></font></span>, <span style="background-color:#ffffff"><font color="#2e8b57"><b>0</b></font></span>), percent10.<span style="background-color:#ffffff"><font color="#2e8b57"><b>2</b></font></span>) <span style="background-color:#ffffff"><font color="#0000ff">into</font></span> :compare <span style="background-color:#ffffff"><font color="#0000ff">from</font></span> _final;<br /><br /><span style="background-color:#ffffff"><font color="#0000ff">select</font></span> case when pdo1 > pdo2 <span style="background-color:#ffffff"><font color="#0000ff">then</font></span> <span style="background-color:#ffffff"><font color="#2e8b57"><b>1</b></font></span> <span style="background-color:#ffffff"><font color="#0000ff">else</font></span> <span style="background-color:#ffffff"><font color="#2e8b57"><b>0</b></font></span> <span style="background-color:#ffffff"><font color="#0000ff">end</font></span> <span style="background-color:#ffffff"><font color="#0000ff">into</font></span> :flag <span style="background-color:#ffffff"><font color="#0000ff">from</font></span> _final;<br /><br /><span style="background-color:#ffffff"><font color="#0000ff">select</font></span> <span style="background-color:#ffffff"><font color="#0000ff">put</font></span>(adjust_beta0, <span style="background-color:#ffffff"><font color="#2e8b57"><b>12.8</b></font></span>) <span style="background-color:#ffffff"><font color="#0000ff">into</font></span> :beta0 <span style="background-color:#ffffff"><font color="#0000ff">from</font></span> _final;<br /><br /><span style="background-color:#ffffff"><font color="#0000ff">select</font></span> <span style="background-color:#ffffff"><font color="#0000ff">put</font></span>(adjust_beta1, <span style="background-color:#ffffff"><font color="#2e8b57"><b>12.8</b></font></span>) <span style="background-color:#ffffff"><font color="#0000ff">into</font></span> :beta1 <span style="background-color:#ffffff"><font color="#0000ff">from</font></span> _final;<br /><span style="background-color:#ffffff"><font color="#000080"><b>quit</b></font></span>;<br /><br /><span style="background-color:#ffffff"><font color="#0000ff">%put</font></span> <font color="#0000ff"><b>&compare</b></font>;<br />ods html <span style="background-color:#ffffff"><font color="#0000ff">file</font></span> = <span style="background-color:#ffffff"><font color="#a020f0">"%upcase(%trim(&score))_PDO_SUMMARY.html"</font></span> style = sasweb;<br /><span style="background-color:#ffffff"><font color="#0000ff">title</font></span>;<br /><span style="background-color:#ffffff"><font color="#000080"><b>proc report</b></font></span> <span style="background-color:#ffffff"><font color="#000080"><b>data</b></font></span> = _final box spacing = <span style="background-color:#ffffff"><font color="#2e8b57"><b>1</b></font></span> split = <span style="background-color:#ffffff"><font color="#a020f0">"/"</font></span> <br /> style(header) = [font_face = <span style="background-color:#ffffff"><font color="#a020f0">"courier new"</font></span>] style(column) = [font_face = <span style="background-color:#ffffff"><font color="#a020f0">"courier new"</font></span>]<br /> style(lines) = [font_face = <span style="background-color:#ffffff"><font color="#a020f0">"courier new"</font></span> font_size = <span style="background-color:#ffffff"><font color="#2e8b57"><b>2</b></font></span>] style(report) = [font_face = <span style="background-color:#ffffff"><font color="#a020f0">"courier new"</font></span>];<br /><br /> column(<span style="background-color:#ffffff"><font color="#a020f0">"/SUMMARY OF POINTS TO DOUBLE ODDS FOR %upcase(&score) WEIGHTED BY %upcase(&wt) IN DATA %upcase(&data)</font></span><br /><span style="background-color:#ffffff"><font color="#a020f0"> /( TARGET PDO = &target_pdo, TARGET ODDS = &target_odds AT REFERENCE SCORE &ref_score ) / "</font></span><br /> pdo1 ref1 odd1 ln_odd1 pdo2 ref2 odd2 ln_odd2);<br /><br /> define pdo1 / <span style="background-color:#ffffff"><font color="#a020f0">"OBSERVED/SCORE PDO"</font></span> width = <span style="background-color:#ffffff"><font color="#2e8b57"><b>10</b></font></span> <span style="background-color:#ffffff"><font color="#0000ff">format</font></span> = <span style="background-color:#ffffff"><font color="#2e8b57"><b>4</b></font></span>. center;<br /> define ref1 / <span style="background-color:#ffffff"><font color="#a020f0">"OBSERVED/REF. SCORE"</font></span> width = <span style="background-color:#ffffff"><font color="#2e8b57"><b>15</b></font></span> <span style="background-color:#ffffff"><font color="#0000ff">format</font></span> = <span style="background-color:#ffffff"><font color="#2e8b57"><b>5</b></font></span>. center <span style="background-color:#ffffff"><font color="#0000ff">order</font></span> <span style="background-color:#ffffff"><font color="#0000ff">order</font></span> = <span style="background-color:#ffffff"><font color="#000080"><b>data</b></font></span>;<br /> define odd1 / <span style="background-color:#ffffff"><font color="#a020f0">"OBSERVED/ODDS"</font></span> width = <span style="background-color:#ffffff"><font color="#2e8b57"><b>15</b></font></span> <span style="background-color:#ffffff"><font color="#0000ff">format</font></span> = <span style="background-color:#ffffff"><font color="#2e8b57"><b>14.4</b></font></span> center;<br /> define ln_odd1 / <span style="background-color:#ffffff"><font color="#a020f0">"OBSERVED/LOG ODDS"</font></span> width = <span style="background-color:#ffffff"><font color="#2e8b57"><b>15</b></font></span> <span style="background-color:#ffffff"><font color="#0000ff">format</font></span> = <span style="background-color:#ffffff"><font color="#2e8b57"><b>8.2</b></font></span> center;<br /> define pdo2 / <span style="background-color:#ffffff"><font color="#a020f0">"ADJUSTED/SCORE PDO"</font></span> width = <span style="background-color:#ffffff"><font color="#2e8b57"><b>10</b></font></span> <span style="background-color:#ffffff"><font color="#0000ff">format</font></span> = <span style="background-color:#ffffff"><font color="#2e8b57"><b>4</b></font></span>. center;<br /> define ref2 / <span style="background-color:#ffffff"><font color="#a020f0">"ADJUSTED/REF. SCORE"</font></span> width = <span style="background-color:#ffffff"><font color="#2e8b57"><b>15</b></font></span> <span style="background-color:#ffffff"><font color="#0000ff">format</font></span> = <span style="background-color:#ffffff"><font color="#2e8b57"><b>5</b></font></span>. center;<br /> define odd2 / <span style="background-color:#ffffff"><font color="#a020f0">"ADJUSTED/ODDS"</font></span> width = <span style="background-color:#ffffff"><font color="#2e8b57"><b>15</b></font></span> <span style="background-color:#ffffff"><font color="#0000ff">format</font></span> = <span style="background-color:#ffffff"><font color="#2e8b57"><b>14.4</b></font></span> center; <br /> define ln_odd2 / <span style="background-color:#ffffff"><font color="#a020f0">"ADJUSTED/LOG ODDS"</font></span> width = <span style="background-color:#ffffff"><font color="#2e8b57"><b>15</b></font></span> <span style="background-color:#ffffff"><font color="#0000ff">format</font></span> = <span style="background-color:#ffffff"><font color="#2e8b57"><b>8.2</b></font></span> center;<br /><br /> compute after;<br /> <span style="background-color:#ffffff"><font color="#0000ff">%if</font></span> <font color="#0000ff"><b>&flag</b></font> = <span style="background-color:#ffffff"><font color="#2e8b57"><b>1</b></font></span> <span style="background-color:#ffffff"><font color="#0000ff">%then</font></span> <span style="background-color:#ffffff"><font color="#0000ff">%do</font></span>;<br /> line @<span style="background-color:#ffffff"><font color="#2e8b57"><b>15</b></font></span> <span style="background-color:#ffffff"><font color="#a020f0">"THE SCORE ODDS IS DETERIORATED BY %trim(&compare)."</font></span>;<br /> line @<span style="background-color:#ffffff"><font color="#2e8b57"><b>15</b></font></span> <span style="background-color:#ffffff"><font color="#a020f0">"CALIBRATION FORMULA: ADJUSTED SCORE = %trim(&beta0) + %trim(&beta1) * %trim(%upcase(&score))."</font></span>;<br /> <span style="background-color:#ffffff"><font color="#0000ff">%end</font></span>;<br /> <span style="background-color:#ffffff"><font color="#0000ff">%else</font></span> <span style="background-color:#ffffff"><font color="#0000ff">%do</font></span>;<br /> line @<span style="background-color:#ffffff"><font color="#2e8b57"><b>25</b></font></span> <span style="background-color:#ffffff"><font color="#a020f0">"THERE IS NO DETERIORATION IN THE SCORE ODDS."</font></span>; <br /> <span style="background-color:#ffffff"><font color="#0000ff">%end</font></span>;<br /> endcomp;<br /><span style="background-color:#ffffff"><font color="#000080"><b>run</b></font></span>;;<br />ods html <span style="background-color:#ffffff"><font color="#0000ff">close</font></span>;<br /><br /><span style="background-color:#ffffff"><font color="#008000">*************************************************;</font></span><br /><span style="background-color:#ffffff"><font color="#008000">* END OF THE MACRO *;</font></span><br /><span style="background-color:#ffffff"><font color="#008000">*************************************************;</font></span> <br /><span style="background-color:#ffffff"><font color="#0000ff">%mend</font></span> get_pdo;</font> |
|