為什麼這篇matlab平方鄉民發文收入到精華區:因為在matlab平方這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者ejialan (eji)看板MATLAB標題Re: [討論] 請問Matlab算R-squar...
※ 引述《Cinkot (...)》之銘言:
: : → banco:Matlab算出來的0.9782要平方 0.9782^2 = 0.9568 12/14 23:22
: : → Cinkot:原來如此~ 12/15 01:10
: : → Cinkot:我剛剛又試了 [b,bint,r,rint,stats] = regress(y,X) 12/15 01:11
: : → Cinkot:help說stats包含了R平方 可是套進我的數據沒有用.. 12/15 01:11
: : → Cinkot:就是算不出來.. 12/15 01:12
: : → Cinkot:而help說X should include a column of 1 12/15 01:12
: : → Cinkot:但數據裡面都是沒有1可以include.. 12/15 01:12
: : → Cinkot:後來用cftool去fitting 出來的R是0.9995!! 12/15 01:14
: : → Cinkot:可是我還是不知道要怎麼算R.. 12/15 01:14
: 感謝B大解說~
: 昨天try了後來用 fit 有算出來
: type=fittype('a*x.^4+b*x.^3+c*x.^2+d*x+e');
: [coef stats]fit(xdata,ydata,type,'start',[0 0 0 0 0])
: 這樣在stats.rsquare的值就是R值了
: 只是不知道有沒大大知道多項式的R值公式阿?
: 網路上的資料都是 1-SSR/TSS 的就是Matlab的corrcoef
: 感謝
R-Square = 1 - SSE/SST
不管用什麼model fitting都是這個公式
所以只要把fitting得到的係數代入你給定的model
算出在xdata上的model值
再套SSE SST的定義就是R-Square
舉例
xdata=linspace(0,1,10)';
ydata=sin(xdata);
type=fittype('a*x.^5+b*x.^3+c*x.^2+d*x+e');
[coef ,stats]=fit(xdata,ydata,type,'start',[0 0 0 0 0])
a = coef.a;
b = coef.b;
c = coef.c;
d = coef.d;
e = coef.e;
yi=a*xdata.^5+b*xdata.^3+c*xdata.^2+d*xdata+e; %model values
ybar=mean(ydata); %資料平均
SSE=sum((yi-ydata).^2);
SST=sum((ydata-ybar).^2);
R2=1-SSE/SST
這樣計算的R2和stats.rsquare一樣
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.146.175