이 데이터를 수동으로 (즉, 탐색 데이터 분석)에 맞추는 데 사용하는 방법은 이러한 데이터와 함께 잘 작동 할 수 있습니다.
매개 변수를 긍정적으로 만들기 위해 모델을 약간 다시 매개 변수화하고 싶습니다 .
y=ax−b/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 충분히 크다
xi≈1a(yi+b^x^i−−√).
a^aa
x
xi≈b21−2a^b^x^3/2y2i.
bb^
xi1/y2ixixiyixi1/y2iyi 빨간색으로, 가장 작은 절반은 파란색으로, 원점을 통과하는 선은 빨간색 점에 맞습니다.
xyxb0.0964
이 시점에서 예측 값을 통해 업데이트 할 수 있습니다
x^i=f(yi;a^,b^).
추정치가 안정화 (보장되지 않음)되거나 작은 범위의 값 (아직 보장 할 수 없음)을 순환 할 때까지 반복 하십시오.
axba^=0.0001960.0001b^=0.10730.1). 한번 데이터가 어느 때 중첩이 플롯 쇼 (a)는 진정한 그레이 (점선)의 곡선과 (b) 상기 추정 된 적색 (고체) 곡선 :
3.734
이 방법에는 몇 가지 문제가 있습니다.
암호
다음은 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}
];
x
y
data = {x,y}
a=b=0
{a, b, xHat} = NestWhile[estimate[##, data] &, {0, 0, data[[1]]},
Norm[Most[#1] - Most[#2]] >= 0.001 &, 2, 100]