1평균이 85이고, 표준편차가 5인 정규분포에서, 상위 5%이내에 들 점수의 경계값은? #
DECLARE
@mu float -- 평균
, @sigma float -- 표준편차
, @min float -- 최소값
, @max float -- 최대값
, @munit float -- 단위(성적의 경우 최소단위는 1점이다.)
, @target_rate float
SET @mu = 85;
SET @sigma = 5;
SET @min = 0;
SET @max = 100;
SET @munit = 1
SET @target_rate = 5;
--SELECT (1/(SQRT(2*PI())*@sigma)) * EXP(-(1/(2*POWER(@sigma,2))) * POWER((@x-@mu), 2)) 확률밀도함수
WITH Dumy(x)
AS
(
SELECT @min x
UNION ALL
SELECT x + @munit FROM Dumy
WHERE x + @munit <= @max
)
--누적정규분포 역으로 찾아보자..
SELECT
MAX(CASE WHEN Val <= (100 - @target_rate) * 0.01 THEN x END) MinVal
, MIN(CASE WHEN Val >= (100 - @target_rate) * 0.01 THEN x END) MaxVal
FROM (
SELECT
B.x
, SUM((1/(SQRT(2*PI())*@sigma)) * EXP(-(1/(2*POWER(@sigma,2))) * POWER((A.x-@mu), 2))) Val
FROM Dumy A INNER JOIN Dumy B
ON A.x <= B.x
GROUP BY B.x
) T
OPTION (MAXRECURSION 0);
/* 결과
MinVal MaxVal
92 93
--92~93점 정도 맞으면 된다.
*/
/*
시나리오
철수는 수학점수를 90점 받았고, 수학과목의 전체 평균은 85점이다.
표준편차는 5이다. 국어는 85점을 받았으며, 국어과목의 전체 평균은 70점이다.
국어과목의 표준편차는 10이다. 어떤 과목의 성적이 더 우수한가?
*/
WITH Dumy(x)
AS
(
SELECT 0 x
UNION ALL
SELECT x + 1 FROM Dumy
WHERE x + 1 <= 100.0
)
SELECT
과목
, (1 - SUM((1/(SQRT(2*PI())*표준편차)) * EXP(-(1/(2*POWER(표준편차,2))) * POWER((x-평균), 2)))) * 100 [상위%]
FROM (
SELECT '수학' 과목, 90.0 점수, 85.0 평균, 5.0 표준편차
UNION ALL
SELECT '국어' 과목, 85.0 점수, 70.0 평균, 10.0 표준편차) A CROSS JOIN Dumy
WHERE x <= 점수
GROUP BY 과목
OPTION (MAXRECURSION 0);
/*
결과
과목 상위%
------- ----------------
국어 6.04932387024276
수학 13.5265829069615
국어는 상위 6.04% 이고, 수학은 13.52%이므로 국어의 성적이 더 우수하다.
*/
/*
DECLARE
@x float -- 변량
, @mu float -- 평균
, @sigma float -- 표준편차
SET @x = 90
SET @mu = 85
SET @sigma = 5;
--SELECT (1/(SQRT(2*PI())*@sigma)) * EXP(-(1/(2*POWER(@sigma,2))) * POWER((@x-@mu), 2)) 확률밀도함수
WITH Dumy(x)
AS
(
SELECT 0 x
UNION ALL
SELECT x + 1 FROM Dumy
WHERE x + 1 <= 90.0
)
--누적정규분포
SELECT SUM((1/(SQRT(2*PI())*@sigma)) * EXP(-(1/(2*POWER(@sigma,2))) * POWER((x-@mu), 2)))
FROM Dumy
OPTION (MAXRECURSION 0);
*/