본문 바로가기
Programming/Machine Learning

Relative Standard Deviation(RSD) 란? (ft. 간단한 Python 예제)

by a voyager 2022. 5. 9.
728x90
반응형

Victoria Park in Hong Kong

 

Relative Standard deviation(RSD)는 해석하자면 '상대적인 표준편차'이고, 다른 말로는 Coefficient of variation (CV) (변화의 계수)라고 하기도 한다. 

 

이것은 주로 측정의 반복성(Repeatability)을 테스트하는 데 사용된다. 특히, 반도체 분야의 계측에서 wafer의 하나의 die에 대한 측정을 여러 번 반복하여 데이터를 얻은 후 그 측정값들의 RSD를 계산하여 계측의 정밀도(precision)를 평가하게 된다.

 

따라서, RSD가 작을 수록 정밀도가 높은 계측이 된다. 가령 측정값이 모두 같게 나왔다면, RSD=0%이 될 것이다. 이는 상대적 표준편차가 0이고 계측의 정밀도가 아주 높다는 뜻이다. 

 

이것이 일반적인 표준편차하고 어떻게 다른지는 정의를 보면 알 수 있다.

 

 

즉, 데이터의 표준편차(Standard deviation)를 평균(mean)으로 나누고 100을 곱하여 퍼센트(%)로 표현한다. 

 

계산은 아주 쉽다. 간단한 예제를 통해 실제 값을 구해보고 그 값의 의미를 생각해 볼 수 있다. 

 

 

Example 1)

예를 들어 49, 51.3, 52.7, 55.8 이 있다고 하면, 다음과 같이 계산한다. 

numbers= [49, 51.3, 52.7, 55.8]

RSD = np.std(numbers)/np.mean(numbers)*100

print(RSD)

# 4.717858373955843

 

Example 2)

위의 예제 보다는 조금 더 실용적인 time series 데이터를 하나 만들어서 RSD를 계산해보자. 

 

우선 아래와 같이 시계열 데이터를 하나 만들고 그래프로 그려보자 

 

import pandas as pd
import numpy as np

# some sample data
ts = pd.Series(np.random.randn(1000), 
               index=pd.date_range('1/1/2000', periods=1000)).cumsum()
               
ts.plot(figsize=(7,3))

 

 

Option 1: using windowing

윈도우 사이즈를 60으로 하여 계산해보자. 이것은 시간에 따라 60개의 데이터 포인트로 RSD를 계산한다는 것이다. 

window = 60

rolling_rsd = ts.rolling(window=window).std()/ts.rolling(window=window).mean()

rolling_rsd.plot(figsize=(7,3))

 

이 예제에서 보듯이 RSD는 정의상 음수가 될 수도 있다. 평균이 음수가 될 수 있기 때문이다. 이럴 경우에는 절대값을 취해 RSD를 양수로 계산하는 것이 일반적이다. 

 

 

Option 2: for the entire series 

이번에는 시계열 전체 데이터에 대해서 계산해보자. 

abs(ts.std()/ts.mean())*100

# 66.58760933316076

 

 

참고한 링크 

 

 

 

 

728x90
반응형

댓글