mpfitfun 관련

게시판 IDL Q&A mpfitfun 관련

이 게시글은 1개 답변과 2명 참여가 있으며 마지막으로  Sangwoo에 의해 3 월, 1 주 전에 업데이트 됐습니다.

  • 글쓴이
  • #5249

    inmyta27
    회원

    안녕하세요 다름이 아니라
    mpfitfun 함수를 사용하여 관계식을 도출하려고 합니다.
    관계식 형태는 DATA2=aDATA1^b 로 계수(a, b)를 도출하려고 합니다.

    x축 : DATA1, y축 : DATA2 로 해서

    weight=replicate(1.0, n_elements(DATA2))
    start=[0.,0.]

    reg_rela=mpfitfun(‘func_one’, DATA1, DATA2, weight, start)

    로 해서 값을 도출하였는데, 도출된 값으로 산포도 값에 plot 해보니 산포도 값이랑 잘 맞지 않아서요
    혹시 weight이나 start를 조절해서 fit을 잘 맞출 수 있을까요?
    아니면 다른 방법으로 fit을 맞출수 있을까요?

  • #5259

    Sangwoo
    회원

    실제로 data1, data2에 어떤 값들이 있는지에 따라 상황은 다르겠지만, MPFITFUN 함수에서 네번째 인자로 주어진 weight의 문제가 아닐까 짐작을 해봅니다. 사실 MPFITFUN 함수의 주석설명문에 의하면, 그 위치의 인자는 weight가 아니라 Y값의 에러 분포의 1-sigma에 해당되는 값들이 되어야 합니다. 이 부분이 위의 예제코드에서는 1.0이란 값들로 주어져 있는데, 원본 데이터의 Y값(data2)들이 어떤 범위내에서 존재하는 값들이냐에 따라서 근사가 잘 될 수도 있고 잘 안될 수도 있습니다. 예를 들어 Y값들이 대략 0~10 정도의 범위내에서 존재하는 경우 에러 분포의 1-sigma가 1.0이라는 것은 충분히 가능한 얘기이고 이런 경우 근사가 무리없이 잘 될 겁니다. 하지만 Y값들이 0~1000 또는 0~10000 정도의 범위일 경우에는 에러 분포의 1-sigma가 1.0밖에 안될 정도로 작다는 것은 굉장한 무리가 따르기 때문에, 근사가 잘 안될 가능성이 큽니다. 물론 초기의 a, b를 어떻게 주느냐도 영향이 있을 수 있는데, 제가 알기로 MPFITFUNC의 iteration 횟수 기본값이 200이므로, 200회의 반복횟수 정도라면 웬만한 경우라면 근사값에 도달할 것으로 생각됩니다. 따라서 원본 데이터의 값의 범위와 에러 분포의 가능 범위에 대한 검토를 다시 해본 후 근사를 다시 시도해보시면 어떨까 합니다.

답변은 로그인 후 가능합니다.