Re: [討論] 請問Matlab算R-squared值

看板MATLAB作者 (eji)時間15年前 (2010/12/16 13:34), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《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

12/16 14:21, , 1F
因為他用不一樣MODEL去fitting出來的data是不一樣的,當然會
12/16 14:21, 1F

12/16 14:21, , 2F
有好幾個R^2
12/16 14:21, 2F

12/16 14:24, , 3F
原來如此~ 好一目了然的範例! 感謝您
12/16 14:24, 3F
文章代碼(AID): #1D2QK1y5 (MATLAB)
文章代碼(AID): #1D2QK1y5 (MATLAB)