[請益] 請問這個code哪裡錯了

看板MATLAB作者 (makoto)時間14年前 (2011/10/31 18:41), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串1/1
我有兩個自變數與一個依變數 規定要用pseudo-inverse來計算迴歸係數 但卻一直出現error 怎麼改都出不來正確值 希望有好心人幫我看一下哪裡錯了 謝謝! 第一部份: clear x1=[110 112 118 119 122 125 127 130 132 134 136 138]; % 輸入自變項X1=IQ數值 x2=[8 10 6 13 14 6 13 12 13 11 12 18]; % 輸入自變項X2=StudyTime數值 y=[1.0 1.6 1.2 2.1 2.6 1.8 2.6 2.0 3.2 2.6 3.0 3.6]; % 輸入依變項Y=GPA數值 X=[x1;x2;ones(size(x1))]; betaCoeff=pinv(X)*y 上面這段會出現 ??? Error using ==> mtimes Inner matrix dimensions must agree. 請問哪裡寫錯了?? 如果我要改用regststs指令,請問要怎麼寫? 第二部份: 接續第一部份我要做迴歸預測及判定是否刪掉哪個變數仍可單獨預測y 稍微更改一下寫法 但還是有error....請問是哪裡有錯誤呢?為何係數都不出來? 我要看哪裡的值來判斷其顯著性? 謝謝,希望有人能幫幫忙~~ [data]=xlsRead('hw'); y=data(:,1); X=data(:,2); T=data(:,3); n=length(y); x=[ones(n,1),X,T]; varY=var(y); p=2; betaCoeff=pinv(x)*y; predy=x*betaCoeff; r=corrcoef(predy,y); r_square=r(2,1).^2; Fg=[r_square/(1-r_square)]*[(n-p-1)/p]; pg=1-fcdf(Fg,p,n-p-1); if(pg<0.05) disp('the regression model is good'); else disp('the regression model is bad'); end s=regstats(y,[X T],'linear','all'); sX=regstats(y,[X],'linear','all'); sT=regstats(y,[T],'linear','all'); SSR=6.3886; SSX=5.1406; SST=4.8215; FX=[(SSX-SSR)/(p-(p-1))]/[SSX/(p-1)]; pX=1-fcdf(FX,1,n-2); if(pX<0.05) disp('the regressionX get worse'); else disp('the regressionX do not get worse '); end FT=[(SST-SSR)/(p-(p-1))]/[SST/(p-1)]; pT=1-fcdf(FT,1,n-2); if(pX<0.05) disp('the regressionT get worse'); else disp('the regressionT do not get worse '); end figure(1) plot(x1,y,'ro',[0:0.1:150],betaCoeff(1)+betaCoeff(2)*[0:0.1:150]+betaCoeff(3)*mean(x2),'g-') figure(2) plot(x2,y,'bo',[0:1:20],betaCoeff(1)+betaCoeff(2)*mean(x1)+betaCoeff(3)*[0:1:20],'k:') figure(3) plot(x1,y,'ro',[0:0.1:150],result.beta(1)+result.beta(2)*[0:0.1:150],'r-') plot(x2,y,'bo',[0:0.1:20],result2.beta(1)+result2.beta(2)*[0:0.1:20],'b-') -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.234.107

10/31 18:44, , 1F
維度不對不能乘
10/31 18:44, 1F

11/01 09:43, , 2F
樓上正解
11/01 09:43, 2F
文章代碼(AID): #1EhdjT-K (MATLAB)