У меня есть набор данных X и Y, к которым я хочу подобрать линию, получить значения R и R ^ 2, а также построить график остатков из разницы между значениями линии наилучшего соответствия и фактическими данными. Вот мой код 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. Разве мои остатки не должны быть равны 0, если мои значения R равны 1?
Что я здесь неправильно понимаю?
Вот пример набора данных:
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]