2014-02-26 2 views
2

데이터 세트에 임의의 함수를 넣기를 원했습니다. 따라서 MATLAB에서 lsqcurvefit을 사용했습니다. 이제 커브 피팅 함수 (lsqcurvefit)가 피팅의 잔여 물을 계산할 때 맞는 프로 시저에 무게를주고 싶습니다. 일부 데이터 요소는 다른 것보다 중요합니다. 좀 더 구체적으로 말하면 통계적 가중 방법을 사용하고 싶습니다. w 매트릭스이다lsqcurvefit으로 가중 곡선 적용

w=1/y(x), 

각 데이터 포인트의 중량을 포함하고 y 데이터 세트이다.

어쨌든 lsqcurvefit으로 가중 곡선 피팅을 찾을 수 없습니다. 내가 따라야 할 트릭이 있습니까 아니면 lsqcurvefit이 아니라 다른 기능이 있습니까?

+0

선형 최소 제곱을 다루는 경우 vandermonde 및 weight 매트릭스를 사용하여 처음부터이 작업을 수행 할 수 있습니다. – mathematician1975

+0

@ mathematician1975, 고마워.하지만 그건 그렇지 않아. 데이터 집합에 맞는 비선형 함수가 있습니다. – user3355900

+0

비용 함수는 어떻게 생겼습니까? 거기에 가중치를 적용 할 수 없습니까? – Dan

답변

3

가중치 적용시 lsqcurvefit이 실제 피팅을 수행하는 함수 인 lsqnonlin을 사용하는 것이 훨씬 쉽습니다.

먼저 최소화하려는 함수를 정의해야합니다. 비용 함수. 당신은 벡터로 함수에 extra parameter로 가중 함수에 전달해야

x = yourIndependentVariable; 
y = yourData; 
weightVector = sqrt(abs(1./y)); 
costFunction = @(A) weightVector.*(yourModelFunction(A) - y); 

aFit = lsqnonlin(costFunction,aGuess); 

가중치 함수 정의의 제곱근에 대한 이유는 lsqnonlin이 잔류하지 제곱 잔차 또는 그 합을 필요로한다는 것이다 따라서 가중치를 미리 정해야합니다.

통계 도구 상자가있는 경우 nlinfit을 사용하면 가중치 벡터/행렬을 선택적 입력으로 사용할 수 있습니다.

+0

명확하고 이해하기 쉽습니다! 고마워. – user3355900

+0

니스 쉽고, 고마워! – Dan