SAS中文论坛
标题:
sas 如何计算概率的一般加法公式
[打印本页]
作者:
shiyiming
时间:
2012-6-14 23:58
标题:
sas 如何计算概率的一般加法公式
对于n个事件的加法公式在这个页面上不太好输入,写出
两个事件的概率加法公式 P(AuB)=P(A)+P(B)-P(AB),
现在问题是,有一个变量,它有n个观测值,其中每个观测值都
代表相应事件发生的概率,想求出各事件和的概率,该如何计算呢?
sas中有没有相应的程序呢?请各位帮助,谢谢!
作者:
shiyiming
时间:
2012-6-19 05:46
标题:
Re: sas 如何计算概率的一般加法公式
any event should be indepedent?
作者:
shiyiming
时间:
2012-6-19 07:32
标题:
Re: sas 如何计算概率的一般加法公式
assume any p(XY) =P(X)P(Y).
and set all prob names as p1, p2, p3, ...
I propose a code for that:
[code:piriddtc]%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:piriddtc]
jingju
作者:
shiyiming
时间:
2012-7-24 08:47
标题:
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这样就好了。
欢迎光临 SAS中文论坛 (http://www.mysas.net/forum/)
Powered by Discuz! X3.2