Advertisement
Guest User

Untitled

a guest
Jun 17th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SAS 3.72 KB | None | 0 0
  1. /* Antonija Ðuriæ */
  2. /* 1191227212 */
  3.  
  4.                                         /* ZADATAK 1 */
  5.  
  6.  
  7.  
  8. /*** A ***/
  9. %let limit1=0;
  10. %let limit2=1;
  11. %let seed=576432;
  12.  
  13.  
  14. data integral1 last1(keep=int1 stde1 var1);
  15. call streaminit(&seed);
  16.  
  17.  do i=1 to 5000;
  18.   x=&limit1+rand("UNIFORM")*(&limit2-&limit1);
  19.   y1=(tanh(sqrt(x**2 +1)))/((sqrt(x**2 + 1))*(x**2 + 2 ));
  20.   y2=&limit2-&limit1;
  21.   y=y1/y2;
  22.   sum+y;
  23.   int1=sum/i;   /* kumulativni prosjek */
  24.   diff2+(y-int1)**2;
  25.   var1=diff2/(i-1);  /* kumulativna stand pogreš */
  26.   stde1=sqrt(var1/i);  /* procj stand pogreš */
  27.   output integral1;
  28.   if i=5000 then output last1;
  29.  end;
  30.  run;
  31.  
  32.  
  33.  
  34.  /*** B ***/
  35. %let abeta=1;
  36. %let bbeta=1.1;
  37.  
  38.  
  39. data integral2 last2(keep=int2 stde2 var2);
  40. call streaminit(&seed);
  41.  
  42.  do i=1 to 5000;
  43.   x=rand("BETA",&abeta,&bbeta) ;
  44.   y1=(tanh(sqrt(x**2 +1)))/((sqrt(x**2 + 1))*(x**2 + 2 ));
  45.   y2=PDF("BETA",x,&abeta,&bbeta);
  46.   y=y1/y2;
  47.   sum+y;
  48.   int2=sum/i;
  49.   diff2+(y-int2)**2;
  50.   var2=diff2/(i-1);
  51.   stde2=sqrt(var2/i);
  52.   output integral2;
  53.   if i=5000 then output last2;
  54.  end;
  55.  run;
  56.  
  57.  
  58.  
  59.  /*** C ***/
  60. %let abeta=1;
  61. %let bbeta=1.2;
  62.  
  63.  
  64. data integral3 last3(keep=int3 stde3 var3);
  65. call streaminit(&seed);
  66.  
  67.  do i=1 to 5000;
  68.   x=rand("BETA",&abeta,&bbeta) ;
  69.   y1=(tanh(sqrt(x**2 +1)))/((sqrt(x**2 + 1))*(x**2 + 2 ));
  70.   y2=PDF("BETA",x,&abeta,&bbeta);
  71.   y=y1/y2;
  72.   sum+y;
  73.   int3=sum/i;
  74.   diff2+(y-int3)**2;
  75.   var3=diff2/(i-1);
  76.   stde3=sqrt(var3/i);
  77.   output integral3;
  78.   if i=5000 then output last3;
  79.  
  80.  end;
  81.  run;
  82.  
  83.  
  84.  
  85.  /*** D ***/
  86.  %let h=0.01;
  87.  
  88.  
  89. data integral4 last4(keep=int4 stde4 var4);
  90. call streaminit(&seed);
  91.  
  92.  do i=1 to 5000;
  93.   x=rand("TRIANGLE",&h) ;
  94.   y1=(tanh(sqrt(x**2 +1)))/((sqrt(x**2 + 1))*(x**2 + 2 ));
  95.   y2=(x <= &h)*2*x/&h + (x>&h) * 2*(1-x)/(1-&h);  **(...) je logièki izraz sa rezultatom 0 ili 1;
  96.   y=y1/y2;
  97.   sum+y;
  98.   int4=sum/i;
  99.   diff2+(y-int4)**2;
  100.   var4=diff2/(i-1);
  101.   stde4=sqrt(var4/i);
  102.   output integral4;
  103.   if i=5000 then output last4;
  104.  
  105.  end;
  106.  run;
  107.  
  108.  
  109.  
  110.  /*** E ***/
  111.  %let h=0.001;
  112.  
  113.  
  114. data integral5 last5(keep=int5 stde5 var5);
  115. call streaminit(&seed);
  116.  
  117.  do i=1 to 5000;
  118.   x=rand("TRIANGLE",&h) ;
  119.   y1=(tanh(sqrt(x**2 +1)))/((sqrt(x**2 + 1))*(x**2 + 2 ));
  120.   y2=(x <= &h)*2*x/&h + (x>&h) * 2*(1-x)/(1-&h);  **(...) je logièki izraz sa rezultatom 0 ili 1;
  121.   y=y1/y2;
  122.   sum+y;
  123.   int5=sum/i;
  124.   diff2+(y-int5)**2;
  125.   var5=diff2/(i-1);
  126.   stde5=sqrt(var5/i);
  127.   output integral5;
  128.   if i=5000 then output last5;
  129.  
  130.  end;
  131.  run;
  132.  
  133.  
  134.  
  135. /*** F ***/
  136.  
  137. %let m=0;
  138. %let s=0.5;
  139.  
  140. /** Truncated normal na intervalu (0,1) ***/
  141.  
  142.  data _NULL_;
  143.   probn1=probnorm((&limit1-&m)/&s);
  144.   probn2=probnorm((&limit2-&m)/&s);
  145.   probn=probn2-probn1;
  146.   call symput("probn",probn);
  147.   put probn1 probn2 probn;
  148.   run;
  149.  
  150.  
  151.  
  152. data integral6 last6(keep=int6 stde6 var6);
  153. call streaminit(&seed);
  154.  
  155.  do while (i<5000);
  156.  
  157.   x=rand("NORMAL",&m,&s) ;
  158.   if x>= &limit1 and x <= &limit2 then do;
  159.   i+1;
  160.   y1=(tanh(sqrt(x**2 +1)))/((sqrt(x**2 + 1))*(x**2 + 2 ));
  161.   y2=pdf('NORMAL',x,&m,&s)/&probn;
  162.   y=y1/y2;
  163.   sum+y;
  164.   int6=sum/i;
  165.   diff2+(y-int6)**2;
  166.   var6=diff2/(i-1);
  167.   stde6=sqrt(var6/i);
  168.   output integral6;
  169.    if i=5000 then output last6;
  170.  
  171.   end;
  172.  end;
  173.   run;
  174.  
  175.  
  176.   /*** NAPOMENA: Spajanje konaènih rezultata (za i=10000) se može izvesti i ruèno (proèitati rezultate - tj. bez ovog zadnjeg koraka spajanja) ***/
  177.  
  178. data sve;
  179.  merge last1 last2 last3 last4 last5 last6;
  180.  array eff eff2-eff6;
  181.  array var var2-var6;
  182.  do over eff;
  183.   eff=var1/var;
  184.  end;
  185.  run;
  186.  
  187.  
  188.   proc print data=sve noobs;
  189.   var int1-int6;
  190.   format int1-int6 10.3;
  191.   run;
  192.  
  193.  proc print data=sve noobs;
  194.   var stde1-stde6;
  195.   format stde1-stde6 10.4;
  196.   run;
  197.  
  198.  
  199.  
  200.  proc print data=sve noobs;
  201.   var eff2-eff6;
  202.   format eff2-eff6 10.3;
  203.   run;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement