2

私はそれについてしばらく苦労してきました。つまり、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 (!)

4

3 に答える 3

2

RSQ は、パワートレンドラインの r-2 乗値を返すのではなく、線形トレンドラインの r-2 乗を返しますExcel のヘルプには、「対数、べき乗、および指数のトレンドラインについて、Excel は変換された回帰モデルを使用します」と表示されていますが、そのモデルを見つけることができません。

べき乗則に対する近似曲線の適合度を測定する方法も参照 してください。

于 2014-06-30T10:46:50.440 に答える
1

これは、グラフの累乗関数 (つまり y = a(x) b ) の R 2を求めているのに対し、Excel の関数は線形フィット (つまり y = a(x ) の R 2を与えるためです。) + b)。Matlabでも同様の問題があると思われます。ただし、Matlab にコードを投稿する必要があります。RQS

于 2014-06-30T10:08:13.163 に答える