Advertisement
Guest User

Untitled

a guest
Jun 17th, 2018
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SAS 2.38 KB | None | 0 0
  1.  
  2.  
  3.  
  4.  
  5. /*** a ***/
  6. %let limit1=0;
  7. %let limit2=1;
  8. %let seed=573392;
  9.  
  10.  
  11. data integral1;
  12. call streaminit(&seed);
  13.  
  14.  do i=1 to 10000;
  15.   x=&limit1+rand("UNIFORM")*(&limit2-&limit1);
  16.   y1=exp(x)/(1+exp(x**2));
  17.   y2=&limit2-&limit1;
  18.   y=y1/y2;
  19.   sum+y;
  20.   int1=sum/i;
  21.   diff2+(y-int1)**2;
  22.   var=diff2/(i-1);
  23.   stde=sqrt(var/i);
  24.   output;
  25.  end;
  26.  run;
  27.  
  28.  
  29.  
  30.  /*** b ***/
  31. %let abeta=5;
  32. %let bbeta=1;
  33.  
  34.  
  35. data integral3;
  36. call streaminit(&seed);
  37.  
  38.  do i=1 to 10000;
  39.   x=rand("BETA",&abeta,&bbeta) ;
  40.   y1=exp(x)/(1+exp(x**2));
  41.   y2=PDF("BETA",x,&abeta,&bbeta);
  42.   y=y1/y2;
  43.   sum+y;
  44.   int1=sum/i;
  45.   diff2+(y-int1)**2;
  46.   var=diff2/(i-1);
  47.   stde=sqrt(var/i);
  48.   output;
  49.  end;
  50.  run;
  51.  
  52.   /*** c ***/
  53. %let abeta=2;
  54. %let bbeta=2;
  55.  
  56.  
  57. data integral4;
  58. call streaminit(&seed);
  59.  
  60.  do i=1 to 10000;
  61.   x=rand("BETA",&abeta,&bbeta) ;
  62.   y1=exp(x)/(1+exp(x**2));
  63.   y2=PDF("BETA",x,&abeta,&bbeta);
  64.   y=y1/y2;
  65.   sum+y;
  66.   int1=sum/i;
  67.   diff2+(y-int1)**2;
  68.   var=diff2/(i-1);
  69.   stde=sqrt(var/i);
  70.   output;
  71.  end;
  72.  run;
  73.  
  74.  
  75.  /*** d ***/
  76.  %let h=0.5;
  77.  
  78.  
  79. data integral5;
  80. call streaminit(&seed);
  81.  
  82.  do i=1 to 10000;
  83.   x=rand("TRIANGLE",&h) ;
  84.   y1=exp(x)/(1+exp(x**2));
  85.   y2=(x <= &h)*2*x/&h + (x>&h) * 2*(1-x)/(1-&h);  **(...) je logièki izraz sa rezultatom 0 ili 1;
  86.   y=y1/y2;
  87.   sum+y;
  88.   int1=sum/i;
  89.   diff2+(y-int1)**2;
  90.   var=diff2/(i-1);
  91.   stde=sqrt(var/i);
  92.   output;
  93.  end;
  94.  run;
  95.  
  96.  /*** e ***/
  97.  %let h=0.77;
  98.  
  99.  
  100. data integral6;
  101. call streaminit(&seed);
  102.  
  103.  do i=1 to 10000;
  104.   x=rand("TRIANGLE",&h) ;
  105.   y1=exp(x)/(1+exp(x**2));
  106.   y2=(x <= &h)*2*x/&h + (x>&h) * 2*(1-x)/(1-&h);  **(...) je logièki izraz sa rezultatom 0 ili 1;
  107.   y=y1/y2;
  108.   sum+y;
  109.   int1=sum/i;
  110.   diff2+(y-int1)**2;
  111.   var=diff2/(i-1);
  112.   stde=sqrt(var/i);
  113.   output;
  114.  end;
  115.  run;
  116.  
  117.  
  118.    /*** f ***/
  119.  
  120. %let m=0.77;
  121. %let s=0.385;
  122.  
  123. /** Truncated normal na intervalu (0,1) ***/
  124.  
  125.  data _NULL_;
  126.   probn1=probnorm((&limit1-&m)/&s);
  127.   probn2=probnorm((&limit2-&m)/&s);
  128.   probn=probn2-probn1;
  129.   call symput("probn",probn);
  130.   put probn1 probn2 probn;
  131.   run;
  132.  
  133.  
  134.  
  135. data integral2;
  136. call streaminit(&seed);
  137.  
  138.  do while (i<10000);
  139.  
  140.   x=rand("NORMAL",&m,&s) ;
  141.   if x>= &limit1 and x <= &limit2 then do;
  142.   i+1;
  143.   y1=exp(x)/(1+exp(x**2));
  144.   y2=pdf('NORMAL',x,&m,&s)/&probn;
  145.   y=y1/y2;
  146.   sum+y;
  147.   int1=sum/i;
  148.   diff2+(y-int1)**2;
  149.   var=diff2/(i-1);
  150.   stde=sqrt(var/i);
  151.   output;
  152.   end;
  153.  end;
  154.  run;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement