私はそれについてしばらく苦労してきました。つまり、Excel が R 2に使用する方程式が見つかりません。
ここに私のデータがあります:
x: 1 2 3 4 5 6 7 8 9 10
y: 4 9 1 2 1 1 8 5 5 1データをプロットし、べき乗関数を当てはめ (「トレンドラインを追加」)、「トレンドラインを追加 > オプション > グラフに R-2 乗値を表示」を使用します。
表示される値:
R 2 = 0.03008。
問題1
「RSQ()」関数を使用してExcelで計算する場合(Excelがフィッティング関数で見つけたパラメータの値を取得する)、または定義(wikipedia)を使用して手動で計算すると...
R 2 = 0.0272
問題 2
Matlab では、'fit' 関数を使用して、フィッティング関数 (そしてもちろん R 2 ) のパラメーターは、EXCEL が見つけたものではありません。
質問:
だからここに私の主な質問があります.Excelは「トレンドラインの追加」関数でR 2
を
どのように計算しますか?
おまけの質問:
なぜ 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;
Matlabの関数から R 二乗を取得fit
するか、「手で」計算するかに関係なく、同じ値を見つけます。Matlab は一貫しているようで、関数で R-squared の厳密な定義を使用しているようです...
しかし、; 私が比較すると:
RSQ()
関数から Excel によって与えられた R 2 乗値- そして、定義からR二乗を手動で計算して取得した値(もちろん、ExcelとMatlabがフィッティングパラメータに同意しないため、Matlabが返すものではなく、Excelが返したyfit値を取ります!)
…違う価値を手に入れた!Excel : 前に述べたように 0.027、手計算では -0.1109 (!)