Эквивалент функции NORMDIST в Excel с использованием PL / SQL - PullRequest
0 голосов
/ 23 марта 2020

Есть ли способ написать хранимую процедуру в PL / SQL для расчета кумулятивного нормального распределения для заданного значения x, стандартного отклонения и среднего?

В Excel существует формула, которая делает это и это NORM.DIST(X, MEAN , STD DEV ,TRUE).

Мне нужно сделать это в PL SQL в oracle или VBA, но я могу сделать это и на других языках.

Спасибо

1 Ответ

1 голос
/ 23 марта 2020
--This stored procedure gives the same result as NORMDIST Function in excel
--The parameters that need to passed are x,mean and standard deviation.
--This method gives the same result as when you pass Cumulative=TRUE in excel.

create or replace FUNCTION NORMSDIST(x_value number,mean_value number,stddev_value number)
RETURN NUMBER IS

        x number;
        t number;
        z number;
        ans number;

BEGIN
  IF (stddev_value = 0) THEN
  RETURN 1;
  END IF;

  x := (x_value-mean_value)/stddev_value;

  z := abs(x)/SQRT(2);

  t := 1.0/(1.0+0.5*z);

  ans := t*exp(-z*z-1.26551223+t*(1.00002368+t*(0.37409196+t*(0.09678418+t*(-0.18628806+t*(0.27886807+t*(-1.13520398+t*(1.48851587+t*(-0.82215223+t*0.17087277)))))))))/2.0;

     If (x <= 0)   
     Then RETURN ans;
     Else return  1-ans;
    End if; 



END NORMSDIST;
...