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
참고한 링크
- https://www.geeksforgeeks.org/how-to-calculate-relative-standard-deviation-in-excel/
- https://stackoverflow.com/questions/57862426/plot-the-ratio-of-the-standard-deviation-to-the-mean-over-bandwidth
'Programming > Machine Learning' 카테고리의 다른 글
[Data Science] r^2를 계산하는 두 가지 방법!! (Python 코드 포함) (0) | 2022.06.11 |
---|---|
1D Convolutional Neural Network 이해하기 (CNN in numpy & keras) (0) | 2021.08.27 |
Feature Importance with Information Gain (0) | 2021.08.21 |
Seaborn boxplot으로 five-number summary 이해하기 (0) | 2021.05.03 |
Information Gain (간단한 예제 & 파이썬 코드) (3) | 2020.12.12 |
댓글