linspace
함수와 sin
함수를 사용하여 기준 정현파 신호에 대한 일부 데이터를 생성합니다.
xdata
는 0
과 2
사이에 있는 60
개의 점으로 구성된 벡터이고 y0
은 xdata
의 값에 대한 사인 함수 값으로 구성된 벡터입니다.
randn
함수를 사용하여 가우스 분포에서 잡음을 생성합니다.
임펄스 잡음을 생성하려면 먼저 randperm
함수와 round
함수를 사용하여 임의의 인덱스로 구성된 벡터를 만듭니다.
idx
는 y0
의 인덱스를 나타내는 정수로 구성된 벡터입니다.
zeros
함수를 사용하여 임펄스 잡음으로 구성된 벡터를 만듭니다. 그런 다음 sign
함수를 사용하여 y0
의 요소가 각각 음수와 양수인 idx
의 위치에서 잡음 벡터에 값 –5
와 5
를 할당합니다.
y0
에 잡음 벡터를 추가합니다.
ydata
는 상수가 아닌 분산을 가진, 잡음이 있는 데이터로 구성된 벡터입니다.
정현파 모델을 ydata
에 피팅합니다.
fit1
은 최소제곱 피팅을 사용하여 정현파 모델을 피팅한 결과를 포함합니다.
fit1
의 모델에서 1.5 표준편차를 초과하여 떨어져 있는 xdata
와 ydata
의 점들로부터 이상값으로 구성된 벡터를 만듭니다.
이상값을 제외한 데이터를 다시 피팅합니다.
fit2
는 정현파 모델을 이상값을 제외한 데이터에 피팅한 결과를 포함합니다.
로버스트 피팅 알고리즘을 사용하여 세 번째 모델을 피팅합니다.
fit3
은 겹제곱 가중치 피팅 알고리즘을 사용하여 정현파 모델을 데이터에 피팅한 결과를 포함합니다.
피팅된 모델들을 비교하려면 데이터, 이상값, 피팅 결과를 플로팅합니다. 각 피팅을 다른 색과 다른 선 스타일로 플로팅하고 자홍색 별표로 이상값을 플로팅합니다.
이 플롯은 각 피팅을 다른 선 색과 다른 선 스타일로 보여줍니다. 3개의 피팅 모두 데이터의 대부분을 따라갑니다. fit1
이 다른 두 피팅보다 이상값에 더 가깝습니다.
fit1
에 대한 잔차를 플로팅합니다.
이 플롯은 fit1
에 대한 잔차가 xdata
의 값에 걸쳐 상수가 아닌 분산을 가지고 있음을 보여줍니다.