블로그 이미지
생각처럼

카테고리

전체보기 (209)
TOOL (1)
다이어리 (1)
Bit (200)
HELP? (0)
Total
Today
Yesterday

달력

« » 2025.1
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

태그목록

최근에 올라온 글

vba로 작성된 코드를 c/c++이나 vb로 바꾸려다보면 제일 먼저 걸리는 문제가 엑셀과 관련된 부분을 바꿔야하는 것이다. 특히 worksheetfunction을 사용하는 경우 더욱 그러하다. 별 고민없이 가져다 사용한 함수를 따로 만들어야 한다. 이럴때 엑셀의 편리함을 절실히 느끼게 되고 심한 경우엔 그냥 vba로 주저앉게 된다. vba로 만든 ADF(Augmented Dickey Fuller test)를 vb로 바꾸려니 통계함수가 걸리는 것이다. 

NORMSDIST()함수는 표준 정규 누적 분포 함수의 확률값을 구한다. 이 분포의 평균은 0이고 표준 편차는 1이다. NORMDIST()함수는 지정한 평균과 표준편차에 따라 정규분포값을 구한다. 따라서 NORMSDIST()함수는 NORMDIST()함수의 특별한 경우라고 볼 수 있다. 즉 NORMSDIST(x)=NORMDIST(x,0,1,TRUE)와 같다.

다음은 NORMSDIST()함수의 vb버전이다.
'// The cumulative normal distribution function
Public Function CND(X As Double) As Double
   Const PI = 3.14159265358979
   Dim L As Double
   Dim K As Double
   
   Const a1 = 0.31938153
   Const a2 = -0.356563782
   Const a3 = 1.781477937
   Const a4 = -1.821255978
   Const a5 = 1.330274429
   
   L = Abs(X)
   K = 1 / (1 + 0.2316419 * L)
   CND = 1 - 1 / Sqr(2 * PI) * Exp(-L ^ 2 / 2) _
       * (a1 * K + a2 * K ^ 2 + a3 * K ^ 3 + a4 * K ^ 4 + a5 * K ^ 5)
   If X < 0 Then
       CND = 1 - CND
   End If
End Function
Posted by 생각처럼
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함