2014-12-11 8 views
1

나는 R과 R^2 값을 얻기 위해 선에 맞추기를 원하는 X와 Y 데이터 세트를 가지고 있으며 그 차이로부터 잔차를 그래프로 나타냅니다. 가장 적합한 라인 값과 실제 데이터 사이. 다음은이 수행 내 MATLAB 코드는 다음과 같습니다1의 선형 상관 관계 MATLAB에서 잔여 값을 남기기

maxx = max(X); minx = min(X); 
fitx = minx:maxx/1000:maxx; 
coeff = polyfit(X,Y,1); 
fity = polyval(coeff,fitx); 

temp = corrcoef(X,Y); 
R = temp(2); R_squared = R^2; 

ysub = polyval(coeff,X); 
residuals = Y - ysub; 

subplot(1,2,1); 
plot(X,Y,'+',fitx,fity,'r') 
xlabel(['R = ' num2str(R) '; R^2 = ' num2str(R_squared)]); 

subplot(1,2,2); 
bar(residuals); 

그래서 나는 완벽하게 라인에 맞게 수있는 "이상적인"데이터 집합을해야 무엇에 그것을 테스트하고, 확실히 충분히, 나는 R과 R을 얻을^2 1의 가치, 그리고 내 첫 음모는 괜찮아 보이지만 내 잔류 물은 7000에서 -3000까지 다양합니다. 내 R 값이 1 인 경우 잔차가 0이 아니어야합니까?

여기 오해는 무엇입니까?

X = [100 200 290 390 480 580 670 760 860 950] 
Y = 1.0e+07 * [0.2429 0.4929 0.7183 0.9689 1.1946 1.4453 1.6711 1.8968 2.1477 2.3735] 

답변

1

샘플 데이터 세트로 진단하기 쉬울 것 : 여기

는 샘플 데이터 세트입니다.

추측에서

, 문제는 첫 번째 라인이 있어야 할 것입니다 : 당신이 있었다

maxx = max(X); minx = min(X); 

방법은이 minx=min(Y) 당신의 fitx을 왜곡하고 fity는 값

편집 :

이 주셔서 감사합니다 샘플 데이터를 제출하십시오. 지금보고있는 것은 반올림 오류뿐입니다. 당신의 R은 실제로 1이 아니며 단지 아주 가깝습니다. 시도하십시오 :

R-1 

귀하의 데이터에 대한 결과는 상관 관계가 완벽하지 않다는 -1.0301e-07입니다. R이 정확히 1이면 잔차가 0이 될 것이라는 점은 맞습니다. 데이터의 크기 (첫 번째 점은 0.338 %, 나머지 점은 최소 10 배)가 남아 있기 때문에 잔차는 매우 작으며 측정 된 상관 계수와 일치합니다.

모든 것이 올바르게 작동하고 있다고 생각합니다.

+0

웁스! 그것은 필사하는 것에서의 오류 일뿐입니다. 내 실제 코드는 X의 최소값과 최대 값만을 취하는 것으로 시작합니다. 나는 그것을 반영하기 위해 질문을 편집했다. –

+0

또한 샘플 데이터 세트를 질문에 추가했습니다. –