보간 101

수년 전, NumXL은 사용자의 모델링 요구를 충족하기 위해 유틸리티 또는 도우미 메서드로 보간 기능을 지원했습니다. 놀랍게도 이 기능은 상당한 관심을 받았으며, 이에 대해 가장 자주 묻는 질문을 여기에 정리하기로 결정했습니다.

보간이란 무엇인가요?

보간은 알려진 불연속 데이터 포인트의 범위를 기반으로 새로운 데이터 포인트의 값을 추정하는 수치적 방법입니다.

예를 들어 아래 그림과 같이 함수 $y=f(x)$의 값이 다섯(5) 개의 별개의 x 값 집합으로 주어졌다고 가정해 보겠습니다.
이 그래프는 5개의 서로 다른 x값으로 구성된 입력 데이터 세트를 보여줍니다.

이제 주어진 5개의 데이터 포인트를 사용하여 $x=5$에서 함수의 값을 추정(즉, 보간)하고자 합니다.

보간을 위해 원하는 목표 x 값은 원본 데이터 세트의 범위 내에 있어야 합니다(예: $2\le x\le 12$).

더 자세히 알아보기 전에 우리가 자주 듣는 몇 가지 기본적인 질문에 답해 보겠습니다:

  1. 외삽은 어떤가요? 어떻게 다른가요?
    외삽은 주어진 데이터 집합의 범위를 벗어나는 x 값의 함수 값을 추정하는 프로세스입니다.
  2. NumXL은 외삽을 지원하나요?
    예, 동일한 기능 NxINTRPL(.) 를 외삽에 사용할 수 있습니다. "extrapolate" 인수에 "true" 또는 1을 전달해야 합니다.
  3. 커브 피팅(예: 회귀)과 보간은 같은 것인가요?
    커브 맞춤과 보간은 종종 같은 의미로 사용되지만, 보간은 데이터 포인트에 정확히 맞아야 하는 반면 커브 맞춤은 가능한 한 가깝게 맞춰야 한다는 미묘한 차이가 있습니다.
  4. 보간 또는 커브 피팅을 사용해야 하나요?
    상황에 따라 다릅니다. 보간은 데이터 포인트가 완벽하게(또는 적어도 매우 높은 정밀도로) 알려져 있다고 가정하는 반면, 곡선 맞춤은 데이터 포인트에 어느 정도의 노이즈가 있다고 가정합니다.

데이터 준비

앞서 언급했듯이 모든 보간 방법은 알려진 데이터 포인트의 불연속 집합을 허용합니다. 실제 데이터 집합을 처리하기 위해 NumXL 보간 함수인 (NxINTRPL) 로 데이터를 사전 처리합니다:

  • 데이터 요소를 오름차순으로 정렬합니다(X 기준).
  • 누락된 값이 있는 데이터 요소를 자동으로 삭제합니다.
  • 동일한 X 값에 대한 여러 판독값을 평균으로 바꿉니다.

FAQ:

Q: 데이터 포인트가 균일하게 분리되어야 하나요?

A: 데이터 포인트 사이의 간격 길이가 균일할 필요는 없지만 보간 정확도를 높이고 이상값의 영향을 최소화하려면 데이터 포인트를 x 범위에 걸쳐 분산하는 것이 좋습니다.

보간 방법

  1. 단계 보간 1: 포워드 플랫 보간:

    단계 보간 방법은 마지막으로 알려진 값을 사용하여 알려진 데이터 포인트 사이에서 미지의 함수를 평탄/상수로 모델링합니다.
    이 그래프는 '포워드 플랫' 보간 방법을 나타냅니다.

  2. 단계 보간 2: 역방향 평면 보간:

    역평탄 방식의 경우 미지 함수도 알려진 데이터 포인트 사이에서 평탄/상수로 모델링되지만 바로 다음 데이터 포인트의 레벨을 사용합니다.
    이 그래프는 '백워드 플랫' 보간 방법을 나타냅니다.

  3. 단계 보간 3: 가장 가까운 이웃 보간:

    최접근 이웃 방법을 사용하면 미지 함수는 여전히 평면/상수로 모델링되지만 가장 가까운 데이터 요소의 수준에 따라 수준이 결정됩니다.
    이 그래프는 '가장 가까운 이웃' 보간 방법을 보여줍니다.

  4. 선형 보간:

    선형 보간을 사용하면 직선을 사용하여 각 데이터 요소를 이웃 데이터 요소에 연결합니다.
    이 그래프는 '선형' 보간 방법을 나타냅니다.

    두 데이터 포인트 사이의 함수 값은 해당 두 데이터 포인트에 의해서만 결정된다는 점에 유의하세요.

  5. 큐빅 스플라인: 내추럴 스플라인:

    큐빅 스플라인 방법을 사용하여 제공된 데이터 포인트에서 첫 번째와 두 번째 도함수가 일치하는 각 간격에 대해 조각 단위의 큐빅 다항식을 구성합니다. 두 번째 도함수는 첫 번째 점과 마지막 점에서 0이 되도록 선택됩니다.
    이 그래프는 '자연 스플라인' 보간 방법을 보여줍니다.

    결과 커브는 부드럽지만 '로컬'이 아니므로 함수가 크게 변경되면(예: x=4) 주변 점 주변의 커브가 '흔들림'(즉, 중간 지점에서 오버슈팅)이 생깁니다.

  6. 큐빅 스플라인: 아키마 스플라인:

    자연스러운 큐빅 스플라인의 흔들리는 곡선을 피하기 위해 데이터 포인트(매듭점) 주변의 두 번째 도함수의 연속성을 완화하여 모서리가 둥글지 않게 만듭니다.
    이 그래프는 '아키마 스플라인' 보간 방법을 보여줍니다.

    위 그림에서 볼 수 있듯이 데이터 포인트 주변의 곡선은 연속적이지만 매끄럽지 않습니다.

  7. 큐빅 스플라인: 스테픈 스플라인:

    슈테펜의 스플라인은 새로운 제약 조건을 추가합니다. 데이터 포인트 사이에 큐빅 스플라인 세그먼트가 단조롭다는 것입니다. 흔들림이 없습니다.
    이 그래프는 '스테펜 스플라인' 보간 방법을 보여줍니다.

    결과 곡선은 데이터 포인트 주변이 매끄럽고 데이터 포인트 사이에 흔들림이 없습니다. 따라서 최소값과 최대값은 데이터 포인트에서만 정확하게 발생할 수 있습니다.

    슈테펜의 스플라인과 그 첫 번째 도함수는 연속적이지만 두 번째 도함수는 불연속적일 수 있습니다.

  8. 큐빅 스플라인: 구속(크루거) 스플라인:

    크루거는 평활성을 희생하여 오버슈팅을 방지하기 위해 제약된 큐빅 스플라인을 제안하여 더 이상 모든 점에서 연속적인 두 번째 도함수가 필요하지 않고 주변 점을 사용하여 첫 번째 도함수 값을 수치적으로 계산할 수 있도록 했습니다.
    이 그래프는 '제약(크루거) 스플라인' 보간 방법을 보여줍니다.

    제약(크루거) 스플라인을 사용하여 큐빅 스플라인의 오버슈트 흔들림 효과를 피하고 단조로움 제약 조건을 추가할 필요가 없었습니다.

다른 유형의 큐빅 스플라인도 있지만, 현재 NumXL 버전 1.68에서 지원되는 것만 소개했습니다.

FAQs:

Q: 어떤 유형의 큐빅 스플라인을 사용해야 하나요?

A: 데이터의 특성과 부드러운 곡선 및/또는 오버슈트 부작용의 중요도에 따라 달라집니다. 대부분의 경우 제약(크루거) 큐빅 스플라인을 안전한 방법으로 선택하는 것이 좋습니다.

Q: NumXL에는 두 가지 보간 함수가 있습니다: INTERPOLATE(.) 그리고 NxINTRPL(.). 어떤 것을 사용해야 하나요?

A: INTERPOLATE(.) 함수는 초기 구현 함수였으나 현재는 더 이상 사용되지 않습니다. 위에서 언급한 모든 보간 메서드는 NxINTRPL(.)에서만 사용할 수 있으므로 이 함수만 사용해야 합니다.

Q: NxINTRPL(.) 함수는 대상 인수로 단일 값과 배열을 모두 허용합니다. 왜 그럴까요?

A: 각 값에 대해 개별적으로 호출하는 것보다 여러 값에 대해 한 번에 보간하는 경우 NxINTRPL(.)이 더 빠르게 실행됩니다. 몇 번의 함수 호출로 모든 x값을 전달하는 것이 좋습니다.

  첨부 파일

댓글

댓글을 남기려면 로그인하세요.

도움이 되었습니까?
0명 중 0명이 도움이 되었다고 했습니다.