Open 213cy opened 9 years ago
%% corr 和corrcoef 算法相同,处理变量的方式不同
% corr(x,y)是corrcoef([x,y])的一部分
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
N=30;%变量个数,向量维数
X= randn(N,1);%一个具有N个观察值的变量
Line=orth(ones(N,1));%参考直线
%现在去寻找另一个变量Y
%% 使Y和X相关系数为1,
%{该Y必须和 参考直线(1,1,1,...)与X共同确定的平面 共面%}
Y=orth([X,Line])*randn(2,1);%+randn*Line
RHO = corr(X,Y)
subplot(221)
plot(X,Y,'o')
title(['\rho = ' num2str(RHO)])
%% 使Y和X相关系数为0,
%{
该Y和参考直线(1,1,1,...)确定的平面 必须和
参考直线(1,1,1,...)与X共同确定的平面 垂直
%}
Y=null([X,Line]')*randn(N-2,1)+randn*Line;
RHO = corr(X,Y)
subplot(224)
plot(X,Y,'o')
title(['\rho = ' num2str(RHO)])
%% 使Y和X相关系数为rho=cos(theta)=cos(2*rand*pi),
theta=pi/6;%rho=cos(theta)=0.86603
y1=orth(Line'*Line*X-Line'*X*Line);%Schimidt
[q,r]=qr([Line,X],0);
y1=q(:,2);%qr 分解
y2=null([X,Line]')*orth(randn(N-2,1));
y0=cos(theta)*y1+sin(theta)*y2;
cos(subspace([X,Line],y0))
Y=randn*y0+randn*Line;
RHO = corr(X,Y)
subplot(222)
plot(X,Y,'o')
title(['\rho = ' num2str(RHO)])
%% 使Y和X相关系数为rho=cos(theta)=cos(2*rand*pi),
theta=pi/3;%rho=cos(theta)=0.5
y1=orth(Line'*Line*X-Line'*X*Line);%Schimidt
[q,r]=qr([Line,X],0);
y1=q(:,2);%qr 分解
y2=null([X,Line]')*orth(randn(N-2,1));
y0=cos(theta)*y1+sin(theta)*y2;
cos(subspace([X,Line],y0))
Y=randn*y0+randn*Line;
RHO = corr(X,Y)
subplot(223)
plot(X,Y,'o')
title(['\rho = ' num2str(RHO)])
%%
Y=randn*X+randn;
RHO = corr(X,Y)
Y=randn(N,1)+randn;
RHO = corr(X,Y)
k=randn;%rho=cos(theta),k=tan(theta)
A=randn;
Y=A.*X+A*k*randn(N,1)+randn;
1/sqrt(k^2+1)
RH0 = corr(X,Y)