作者hphsupsy (makoto)
看板MATLAB
標題[請益] 請問這個code哪裡錯了
時間Mon Oct 31 18:41:30 2011
我有兩個自變數與一個依變數
規定要用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
1F:→ ericabab:維度不對不能乘 10/31 18:44
2F:→ hohoww:樓上正解 11/01 09:43