A. matlab 多因素相關性分析 求思路
給個簡單介紹吧,自己看著用
%多項式插值和擬合
%p=polyfit(x,y,k)
%用k次多項式擬合向量數據(x,y),返回多項式的降冪系數,當k>=n時,polyfit實現多項式插值,這里n是向量維數
x=[0.1 0.2 0.15 0 -0.2 0.3];
y=[0.95 0.84 0.86 1.06 1.50 0.72];
p=polyfit(x,y,2)%二次擬合
xi=-0.2:0.01:0.3;
yi=polyval(p,xi);
subplot(2,2,1);
plot(x,y,'o',xi,yi,'k');
title('polyfit');
%五次擬合
p2=polyfit(x,y,5)
yi=polyval(p2,xi);
subplot(2,2,2);
plot(x,y,'o',xi,yi,'k');
title('polyinterp');
非線性最小二乘擬合:
%非線性最小二乘擬合
%c=lsqcurvefit(Fun,c0,x,y) Fun為兩變數函數f(c,x),c0為參數c的近似值,作為迭代初值,x,y為數據向量
%c=lsqcurve(Run,c0,x,y,lc,uc,options,p1,p2,...)可以設置參數c取值於區間[lc,uc],options為
%優化計算參數選項,p1,p2,...為向函數Fun傳遞附加參數
%擬合非線性函數y=a*exp(b*x),首先講參數a,b合寫為c
fun=inline('c(1)*exp(c(2)*x)','c','x')
x=[0.1 0.2 0.15 0 -0.2 0.3];
y=[0.95 0.84 0.86 1.06 1.50 0.72];
c=lsqcurvefit(fun,[0 0],x,y)%初始值為a=0,b=0
norm(feval(fun,c,x)-y)^2%殘差平方和
%lsqcurvefit可以作為各種類型曲線的擬合,最小二乘法能找到符合經驗公式的最優曲線,但是這一經驗公式是否有效還需要事後檢驗.一般可以從圖像上作
%出判斷,定量方法是計算殘差平方和,再進行統計檢驗.
B. 怎麼用matlab進行兩個矩陣的相關性的分析
1、首先打開MATLAB軟體。
C. MATLAB數據分析方法的基本信息
數據分析是用適當的統計方法對各種數據加以詳細研究和概括總結的過程,已成為當代自然科學和社會科學各個學科研究者必備的知識。matlab是一套高性能的數值計算和可視化軟體,是實現數據分析與處理的有效工具。本書介紹數據分析的基本內容與方法,應用matlab軟體既面向對象又面向過程地編寫實際數據分析程序。全書共分7章,主要內容包括:matlab基礎、數據描述性分析、回歸分析、判別分析、主成分分析與典型相關分析、聚類分析、數值模擬分析。
每章末精心編寫習題供讀者練習,此外每章還安排了緊密聯系實際的綜合性、分析性實驗內容。
《matlab數據分析方法》適用於計算機科學與技術、信息與計算科學、統計學等專業的本科生,還可作為相關專業本科生選修課程教材,並可供碩士研究生以及科技工作者參考。
D. 如何用matlab做單相關分析
matlab自帶的xcorr函數可以使用
c=xcorr(x,y)
c=xcorr(x)
c = xcorr(x,y,'option')
c=xcorr(x,'option')
c=xcorr(x,y,maxlags)
c=xcorr(x,maxlags)
c=xcorr(x,y,maxlags,'option')
c=xcorr(x,maxlags,'option')
[c,lags]=xcorr(...)
E. 如何用matlab實現偏相關分析
matlab偏最小二乘分析(2009-11-20 16:43:07)轉載▼
標簽:雜談
單因變數function y=pls(pz)
[row,col]=size(pz);
aver=mean(pz);
stdcov=std(pz); %求均值和標准差
rr=corrcoef(pz); %求相關系數矩陣
%data=zscore(pz); %數據標准化
stdarr = ( pz - aver(ones(row,1),:) )./ stdcov( ones(row,1),:); % 標准化數據結果與zscore()一致
x0=pz(:,1:col-1);y0=pz(:,end); %提取原始的自變數、因變數數據
e0=stdarr(:,1:col-1);f0=stdarr(:,end); %提取標准化後的自變數、因變數數據
num=size(e0,1);%求樣本點的個數
temp=eye(col-1);%對角陣
for i=1:col-1
%以下計算 w,w*和 t 的得分向量,
w(:,i)= ( e0'* f0 )/ norm( e0'*f0 );
t(:,i)=e0*w(:,i) %計算成分 ti 的得分
alpha(:,i)=e0'*t(:,i)/(t(:,i)'*t(:,i)) %計算 alpha_i ,其中(t(:,i)'*t(:,i))等價於norm(t(:,i))^2
e=e0-t(:,i)*alpha(:,i)' %計算殘差矩陣
e0=e;
%計算w*矩陣
if i==1
w_star(:,i)=w(:,i);
else
for j=1:i-1
temp=temp*(eye(col-1)-w(:,j)*alpha(:,j)');
end
w_star(:,i)=temp*w(:,i);
end
%以下計算 ss(i)的值
beta=[t(:,1:i),ones(num,1)]\f0 %求回歸方程的系數
beta(end,:)=[]; %刪除回歸分析的常數項
cancha=f0-t(:,1:i)*beta; %求殘差矩陣
ss(i)=sum(sum(cancha.^2)); %求誤差平方和
%以下計算 press(i)
for j=1:num
t1=t(:,1:i);f1=f0;
she_t=t1(j,:);she_f=f1(j,:); %把捨去的第 j個樣本點保存起來
t1(j,:)=[];f1(j,:)=[]; %刪除第j個觀測值
beta1=[t1,ones(num-1,1)]\f1; %求回歸分析的系數
beta1(end,:)=[]; %刪除回歸分析的常數項
cancha=she_f-she_t*beta1; %求殘差向量
press_i(j)=sum(cancha.^2);
end
press(i)=sum(press_i)
if i>1
Q_h2(i)=1-press(i)/ss(i-1)
else
Q_h2(1)=1
end
if Q_h2(i)<0.0985
fprintf('提出的成分個數 r=%d',i);
r=i;
break
end
end
beta_z=[t,ones(num,1)]\f0; %求標准化Y關於主成分得分向量t的回歸系數
beta_z(end,:)=[]; %刪除常數項
xishu=w_star*beta_z; %求標准化Y關於X的回歸系數, 且是針對標准數據的回歸系數,每一列是一個回歸方程
mu_x=aver(1:col-1);mu_y=aver(end);
sig_x=stdcov(1:col-1);sig_y=stdcov(end);
ch0=mu_y-mu_x./sig_x*sig_y*xishu; %計算原始數據的回歸方程的常數項
xish=xishu'./sig_x*sig_y; %計算原始數據的回歸方程的系數,每一列是一個回歸方程
Rc=corrcoef(x0*xish'+ch0,y0)
sol=[ch0;xish'] %顯示回歸方程的系數,每一列是一個方程,每一列的第一個數是常數項多因變數function y=pls(pz,Xnum,Ynum)
[row,col]=size(pz);
aver=mean(pz);
stdcov=std(pz); %求均值和標准差
rr=corrcoef(pz); %求相關系數矩陣
data=zscore(pz); %數據標准化
stdarr = ( pz - aver(ones(row,1),:) )./ stdcov( ones(row,1),:); % 標准化自變數
n=Xnum;m=Ynum; %n 是自變數的個數,m是因變數的個數
x0=pz(:,1:n);y0=pz(:,n+1:end); %提取原始的自變數、因變數數據
e0=data(:,1:n);f0=data(:,n+1:end); %提取標准化後的自變數、因變數數據
num=size(e0,1);%求樣本點的個數
temp=eye(n);%對角陣
for i=1:n
%以下計算 w,w*和 t 的得分向量,
matrix=e0'*f0*f0'*e0;
[vec,val]=eig(matrix) %求特徵值和特徵向量
val=diag(val); %提出對角線元素
[val,ind]=sort(val,'descend');
w(:,i)=vec(:,ind(1)) %提出最大特徵值對應的特徵向量
t(:,i)=e0*w(:,i) %計算成分 ti 的得分
alpha(:,i)=e0'*t(:,i)/(t(:,i)'*t(:,i)) %計算 alpha_i ,其中(t(:,i)'*t(:,i))等價於norm(t(:,i))^2
e=e0-t(:,i)*alpha(:,i)' %計算殘差矩陣
e0=e;
%計算w*矩陣
if i==1
w_star(:,i)=w(:,i);
else
for j=1:i-1
temp=temp*(eye(n)-w(:,j)*alpha(:,j)');
end
w_star(:,i)=temp*w(:,i);
end
%以下計算 ss(i)的值
beta=[t(:,1:i),ones(num,1)]\f0 %求回歸方程的系數
beta(end,:)=[]; %刪除回歸分析的常數項
cancha=f0-t(:,1:i)*beta; %求殘差矩陣
ss(i)=sum(sum(cancha.^2)); %求誤差平方和
%以下計算 press(i)
for j=1:num
t1=t(:,1:i);f1=f0;
she_t=t1(j,:);she_f=f1(j,:); %把捨去的第 j個樣本點保存起來
t1(j,:)=[];f1(j,:)=[]; %刪除第j個觀測值
beta1=[t1,ones(num-1,1)]\f1; %求回歸分析的系數
beta1(end,:)=[]; %刪除回歸分析的常數項
cancha=she_f-she_t*beta1; %求殘差向量
press_i(j)=sum(cancha.^2);
end
press(i)=sum(press_i)
if i>1
Q_h2(i)=1-press(i)/ss(i-1)
else
Q_h2(1)=1
end
if Q_h2(i)<0.0985
fprintf('提出的成分個數 r=%d',i);
r=i;
break
end
end
beta_z=[t(:,1:r),ones(num,1)]\f0; %求標准化Y關於 t 的回歸系數
beta_z(end,:)=[]; %刪除常數項
xishu=w_star(:,1:r)*beta_z; %求標准化Y關於X的回歸系數, 且是針對標准數據的回歸系數,每一列是一個回歸方程
mu_x=aver(1:n);mu_y=aver(n+1:end);
sig_x=stdcov(1:n);sig_y=stdcov(n+1:end);
for i=1:m
ch0(i)=mu_y(i)-mu_x./sig_x*sig_y(i)*xishu(:,i); %計算原始數據的回歸方程的常數項
end
for i=1:m
xish(:,i)=xishu(:,i)./sig_x'*sig_y(i); %計算原始數據的回歸方程的系數, 每一列是一個回歸方程
end
sol=[ch0;xish] %顯示回歸方程的系數,每一列是一個方程,每一列的第一個數是常數項
F. matlab怎麼計算兩條曲線的相關性
如何用matlab計算兩條曲線的相關性?這個問題我們可以按下列方法來處理:
第一步,將第一條曲線的數據賦值給A,將第二條曲線的數據賦值給B
第二步,計算A 的均值 μA和標准差σA,計算B 的均值 μB和標准差σB
第三步,利用Pearson 相關系數公式,計算A和B的相關性,計算方法如下
第四步,判斷其相關性是正相關,還是負相關
計算實例:已知:
t=[15 20 25 30 35 40 45 50 55 60 65 70];
A=[0.3 0.4 0.7 1.1 1.7 2.3 3 3.6 4.1 4.4 4.7 4.8];
B=[0.2854 0.4540 0.7080 1.0725 1.5604 2.1561 2.8068 3.4369 3.9795 4.4015 4.7045 4.9098];
求其相關系數
計算結果為
ρ(A,B)=0.99844,正相關