Я некоторое время боролся с этим; Короче говоря, я не могу найти уравнения, которые Excel использует для R2.
Вот мои данные:
x: 1 2 3 4 5 6 7 8 9 10
y: 4 9 1 2 1 1 8 5 5 1Я рисую данные, подгоняю функцию степенного закона («добавить линию тренда») и использую «добавить линию тренда» параметры › Отображать значение R-квадрата на графике.
Отображаемое значение:
R2 = 0,03008.
Задача 1
Если я вычислю его в Excel, используя функцию «RSQ()» (взяв значения параметров, найденных Excel для функции подбора), или вручную, используя определение (википедия)...
R2 = 0,0272
Задача 2
В Matlab, используя функцию «подгонки», параметры функции подгонки (и, конечно же, R2) не те, которые нашел EXCEL.
Вопросы:
Итак, вот мой главный вопрос:
Как Excel вычисляет R2 в функции «добавить линию тренда», поскольку это явно не то, что указано в определении (Википедия)?
и бонусный вопрос:
Почему Excel и Matlab не имеют одинаковых параметров подгонки?
большое спасибо!
%%%%%% РЕДАКТИРОВАТЬ НИЖЕ! %%%%
В ответ на комментарий; Вот код Matlab, который я использую:
%% R-squared with the fit function
% use the fit function in Matlab, yobs being the data
[param, results] = fit(x,yobs,'power1');
% R-squared from the fit function :
r_sq_from_fit = results.rsquare;
%% here I calculate "by hand" the R-squared, from the general definition (wikipedia!)
% calculates the fitting data yfit
yfit = (p_powerlaw.a).*x.^p_powerlaw.b;
% mean of the yobs, total sum of squares, and residual sum of squares
yobs_mean = mean(yobs);
SStot = sum((yobs-yobs_mean).^2);
SSres = sum((yobs-yfit).^2);
r_sq_hand = 1-SSres/SStot;
Я нахожу те же значения, получаю ли я R-квадрат из функции fit
в Matlab или вычисляю его вручную. Matlab кажется последовательным и, по-видимому, использует строгое определение R-квадрата в своей функции...
Однако; когда я сравниваю:
- значение R-квадрата, данное Excel из функции
RSQ()
- и значение, которое я получаю путем ручного вычисления R-квадрата из определения (принимая, конечно, значения yfit, которые вернул мне Excel, а не тот, который возвращает Matlab, поскольку Excel и Matlab не согласны с подгонкой параметры!)
...я получаю разные значения! Excel: 0,027, как я уже говорил, ручное вычисление: -0,1109 (!)