|
地板

楼主 |
发表于 2012-7-24 08:47:54
|
只看该作者
Re: sas 如何计算概率的一般加法公式
[quote="jingju11":1i6ffk5o]assume any p(XY) =P(X)P(Y).
and set all prob names as p1, p2, p3, ...
I propose a code for that:
[code:1i6ffk5o]%macro break;
%let nL =%sysfunc(countw(&String));
%let LastW =%scan(&String, &nL);
%let String =%sysfunc(tranwrd(&String, &LastW,%str() ));
((&String) *(1-&LastW) +&LastW)
%mend;
option mprint mlogic symbolgen;
%macro LastW(n =); %global formula;
%let n1 =%eval(&n -1); %let formula =; %let String=;
%local i;
%do i =1 %to &n1;
%let formula =&formula p&i;
%end;
%let formula =(&formula)*(1-p&n) +p&n;
%do i =1 %to &n;
%let String =&String p&i;
%end;
%do i=1 %to &n1;
%let formula =%sysfunc(tranwrd(&formula, &String,%break));
%end ;
%mend LastW;
data _null_;
array p[100] (100*0.01);
%LastW(n =2)
;
rr0 =&formula;put rr0=;
%LastW(n =3)
;
rr0 =&formula;put rr0=;
%LastW(n =10)
;
rr0 =&formula;put rr0=;
%LastW(n =100)
;
rr0 =&formula;put rr0=;
run;[/code:1i6ffk5o]
jingju[/quote:1i6ffk5o]
这个程序太强大了,很多地方看不懂。多时能像jingju这样就好了。 |
|