作者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