높은 비선형 기능을 맞추기위한 전략


12

생물 물리학 실험의 데이터를 분석하기 위해 현재는 매우 비선형 모델로 커브 피팅을 시도하고 있습니다. 모델 함수는 기본적으로 다음과 같습니다.

y=ax+bx1/2

여기서 특히 의 가치 는 큰 관심을 끌고 있습니다.b

이 함수에 대한 도표 :

기능 플롯

(모델 함수는 시스템에 대한 철저한 수학적 설명을 기반으로하며 매우 잘 작동하는 것처럼 보입니다.-자동 맞춤이 까다로운 것입니다.)

물론 모델 함수는 문제가 있습니다. 지금까지 시도한 피팅 전략은 의 날카로운 점근선 , 특히 노이즈가 많은 데이터로 인해 실패 합니다.x=0

여기서 문제에 대한 나의 이해는 간단한 최소 제곱 피팅 (MATLAB에서 선형 및 비선형 회귀로 재생했습니다. 대부분 Levenberg-Marquardt)은 x의 작은 오류가 크게 증폭되기 때문에 수직 점근선에 매우 민감하다는 것입니다 .

누구 든지이 문제를 해결할 수있는 적합한 전략을 알려 줄 수 있습니까?

통계에 대한 기본 지식이 있지만 여전히 제한적입니다. 어디에서 찾아야하는지 알고 싶다면 배우고 싶어합니다. :)

조언 해 주셔서 감사합니다!

편집 오류를 언급하는 것을 잊어 버린 용서 부탁드립니다. 중요한 노이즈는 에 있으며 추가입니다.x

편집 2 이 질문의 배경에 대한 추가 정보. 위의 그래프는 폴리머의 신축 동작을 모델링 한 것입니다. @ whuber가 주석에서 지적했듯이 위의 그래프를 얻으려면 가 필요합니다 .b200a

사람들 이이 곡선을이 시점까지 맞추는 방법에 관해서는 사람들은 일반적으로 사람들이 잘 맞을 때까지 수직 점근선을 잘라내는 것 같습니다. 컷오프 선택은 여전히 ​​임의적이지만 피팅 절차를 신뢰할 수없고 재현 할 수 없습니다.

3 & 4 고정 그래프 편집


3
오류가 또는 y 또는 둘 다에 발생합니까? 어떤 형태로 노이즈가 발생할 것으로 예상합니까 (곱하기, 덧셈 등)? xy
probabilityislogic

2
@ onnodb : 내 관심사는, 이것이 모델 자체가 얼마나 강력한 지 근본적으로 의심하지 않을까요? 당신이 사용하는 전략을 피팅하는 것은하지 않을 것이다 상관없이 매우 민감한 남아? b에 대한 그러한 추정치에 대해 높은 신뢰를 가질 수 있습니까 ? bb
curious_cat

1
불행히도 여전히 작동하지 않습니다. 단순히 그래프를 질적으로 재현하는 b의 조합은 없습니다 . (분명히 b 는 음수입니다. a 는 그래프에서 가장 작은 기울기보다 작아야하지만 양수이므로이를 좁은 간격으로 만듭니다. 그러나 a 가 그 간격에 있을 때 , 그것은 큰 음의 스파이크를 극복하기에 충분히 크지 않습니다. 에 의해 도입 된 기원 B는 X (1) / 2 용어.) 당신이 그린거야? 데이터? 다른 기능? abbaabx1/2
whuber

1
고마워,하지만 여전히 잘못이야 에서 그래프의 뒤쪽에 접하여 연장되는 임의의, X > 0 ,하면에 Y 축 챌 것 ( 0 , 3 (B) / ( 2 X 1 / 2 ) ) . 0 에서 하향 스파이크가 b를 나타 내기 때문에(x,ax+bx1/2)x>0(0,3b/(2x1/2))0b음수이면이 y 절편도 음수 여야합니다. 그러나 당신의 그림에서, 대부분의 그러한 요격은 긍정적이며 까지 확장된다는 것이 명백합니다 . 따라서 이를 수학적으로 불가능 그런 식 Y = X + B (X) 1 / 2 하여 곡선을 기술 할 수있는 , 심지어 약있다. 최소한 당신은 같은 맞게 필요 Y = X + B X (1) / 2 + C를 . 15.5y=ax+bx1/2y=ax+bx1/2+c
whuber

1
이것에 대한 작업을 수행하기 전에 질문에 대한 진술을 확인하고 싶었습니다. 그래서 기능을 올바르게하는 것이 중요합니다. 나는 지금 완전한 대답을 할 시간이 없지만 "다른 사람들"이 틀릴 수 있다고 말하고 싶지만 더 자세한 내용에 달려 있습니다. 귀하의 경우 오류가 진정되는 첨가제 가 날 것으로 보인다 그렇지 않으면 작은 값에서의 변화에 대해 여전히 강하게 heteroscedastic해야 x는 정말 작은 것입니다. 그 오류에 대해 무엇을 양적으로 말해 줄 수 있습니까? xx
whuber

답변:


10

이 데이터를 수동으로 (즉, 탐색 데이터 분석)에 맞추는 데 사용하는 방법은 이러한 데이터와 함께 잘 작동 할 수 있습니다.

매개 변수를 긍정적으로 만들기 위해 모델을 약간 다시 매개 변수화하고 싶습니다 .

y=axb/x.

주어진 에 대해이 방정식을 만족 하는 고유 한 실수 x 가 있다고 가정합니다 . ( a , b ) 가 이해 될 때 이것을 f ( y ; a , b ) 또는 간결하게하기 위해 f ( y ) 라고 부릅니다 .yxf(y;a,b)f(y)(a,b)

우리 순서쌍들의 집합을 관찰 여기서 X 일탈에서 F ( Y I ; , B ) 제로 수단과 독립하여 랜덤 variates. 이 토론에서 나는 그것들이 모두 공통된 분산을 가지고 있다고 가정하지만, 이러한 결과의 확장 (가중 최소 제곱 사용)이 가능하고 명백하며 구현하기 쉽습니다. 여기서 이러한 컬렉션의 시뮬레이션 예이다 (100 개) 값과 함께, = 0.0001 , B = 0.1 , 그리고 공통의 분산 σ(xi,yi)xif(yi;a,b)100a=0.0001b=0.1 .σ2=4

데이터 플롯

x±2 56xabσ2

aa^b^abx^ixibxi(yi)xx 충분히 크다

xi1a(yi+b^x^i).

a^aa

x

xib212a^b^x^3/2yi2.

bb^

xi1/yi2xixiyixi1/yi2yi 빨간색으로, 가장 작은 절반은 파란색으로, 원점을 통과하는 선은 빨간색 점에 맞습니다.

그림

xyxb0.0964

이 시점에서 예측 값을 통해 업데이트 할 수 있습니다

x^i=f(yi;a^,b^).

추정치가 안정화 (보장되지 않음)되거나 작은 범위의 값 (아직 보장 할 수 없음)을 순환 할 때까지 반복 하십시오.

axba^=0.0001960.0001b^=0.10730.1). 한번 데이터가 어느 때 중첩이 플롯 쇼 (a)는 진정한 그레이 (점선)의 곡선과 (b) 상기 추정 된 적색 (고체) 곡선 :

맞다

3.734

이 방법에는 몇 가지 문제가 있습니다.

  • 추정치가 바이어스됩니다. 데이터 세트가 작고 x 축에 가까운 값이 비교적 적을 때 바이어스가 분명해집니다. 착용감은 체계적으로 약간 낮습니다.

  • yiyi

  • ab


암호

다음은 Mathematica 로 작성되었습니다 .

estimate[{a_, b_, xHat_}, {x_, y_}] := 
  Module[{n = Length[x], k0, k1, yLarge, xLarge, xHatLarge, ySmall, 
    xSmall, xHatSmall, a1, b1, xHat1, u, fr},
   fr[y_, {a_, b_}] := Root[-b^2 + y^2 #1 - 2 a y #1^2 + a^2 #1^3 &, 1];
   k0 = Floor[1 n/3]; k1 = Ceiling[2 n/3];(* The tuning constants *)
   yLarge = y[[k1 + 1 ;;]]; xLarge = x[[k1 + 1 ;;]]; xHatLarge = xHat[[k1 + 1 ;;]];
   ySmall = y[[;; k0]]; xSmall = x[[;; k0]]; xHatSmall = xHat[[;; k0]];
   a1 = 1/
     Last[LinearModelFit[{yLarge + b/Sqrt[xHatLarge], 
          xLarge}\[Transpose], u, u]["BestFitParameters"]];
   b1 = Sqrt[
     Last[LinearModelFit[{(1 - 2 a1 b  xHatSmall^(3/2)) / ySmall^2, 
          xSmall}\[Transpose], u, u]["BestFitParameters"]]];
   xHat1 = fr[#, {a1, b1}] & /@ y;
   {a1, b1, xHat1}
   ];

xydata = {x,y}a=b=0

{a, b, xHat} = NestWhile[estimate[##, data] &, {0, 0, data[[1]]}, 
                Norm[Most[#1] - Most[#2]] >= 0.001 &,  2, 100]

3
이것은 놀라운 답변입니다. 나는 많은 의무가있다! 나는 이것을 가지고 놀고 있었고 결과는 매우 유망 해 보인다. 그러나 추론을 완전히 이해하려면 약간의 시간이 더 필요할 것입니다.
onnodb

3

@probabilityislogic 게시 된 중요한 질문보기

y=yxyx=x3/21/x

b

x

-

추가 정보를 고려하여 편집하십시오.

y=b+ax

이제 오류가 x와 덧셈에 있음을 알았습니다. 분산이 해당 척도에서 일정한지 여부는 여전히 알 수 없습니다.

로 다시 씁니다.x=y/ab/a=my+c

xo=x+ηx

oxo

xo=c+my+ϵϵ=ζxy

나는 그것이 물건을 향상시키는 지 확신하지 못한다! 그런 종류의 방법이 있다고 생각하지만 실제로는 내 영역이 아닙니다.

나는 당신이 역 회귀를보고 싶을 수도 있다고 언급했지만, 함수의 특정 형태는 그것을 멀리하는 것을 방해 할 수 있습니다.

심지어 그 선형 형태로 상당히 강력하고 오류가 많은 방법을 시도하는 데 어려움을 겪을 수도 있습니다.

-

y

x


x

2
" 오류가 x "인 경우에도 마찬가지 입니다. 역 회귀를 확인하고 싶을 수도 있습니다.
Glen_b-복지 주 모니카

3
... 또는 모델 직접 맞출 수 있습니다.x=13(2ya+21/3y2(27a4b22a3y3+3327a8b44a7b2y3)1/3+(27a4b22a3y3+3327a8b44a7b2y3)1/321/3a2)

xoxox+ζx=(thatmonster)+ϵϵ=ζ

x(y)yb

0

몇 주 더 실험 한 후,이 특별한 경우에 다른 기법이 가장 효과가있는 것 같습니다 : Total Least Squares fitting . 일반적인 (비선형) 최소 제곱 피팅의 변형이지만 축 중 하나를 따라 맞춤 오차를 측정하는 대신 (이와 같은 매우 비선형의 경우 문제 발생) 축을 모두 고려합니다.

비선형 사례가 더 애매하지만 주제에 대해 많은 기사, 튜토리얼 및 책이 있습니다. 심지어 일부있다 MATLAB 코드 이 없습니다.


yy

@whuber 우려를 표명 해 주셔서 감사합니다! 현재이 문제에 대한 TLS 피팅의 신뢰성을 조사하기 위해 시뮬레이션을 실행하고 있습니다. 지금까지 내가 본 것은 변수에 대한 TLS의 고려가 모델의 높은 비선형 성을 극복하는 데 크게 도움 이된다는 것 입니다. 시뮬레이션 된 데이터의 적합은 신뢰할 수 있고 매우 잘 수렴됩니다. 더 많은 작업을 수행해야합니다. 실제 데이터를 더 많이 확보하고 나면 문제를 자세히 살펴보면이 방법에 따라 분석법을 쌓아야합니다.
onnodb

내가 제안한 방법에 대해 비슷한 우려가 있다는 것을 잊지 마십시오!
whuber
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.