Cómo utilizar matlab para implementar análisis de correlación parcial
Etiqueta: Varios
Función de variable dependiente única y=pls(pz)
[row, col]=size(pz);
aver=mean(pz);
stdcov=std(pz); Encuentra la media y la desviación estándar
rr=corrcoef(pz); Encontrar matriz de coeficientes de correlación
data=zscore(pz); normalización de datos
stdarr = ( pz - aver(ones (fila, 1); ), :))./ stdcov( ones(row, 1), :); Resultados de datos normalizados y zscore()
x0=pz(:, 1:col-1); :, end); Extraer datos originales de la variable independiente y la variable dependiente
e0=stdarr(:, 1:col-1); f0=stdarr(:, end);
num=size(e0, 1); encuentra el número de puntos de muestra
temp=eye(col-1); matriz diagonal
para i= 1: col-1
Calcule los vectores de puntuación de w, w* y t,
w(:,i)= (e0'* f0)/ norm( e0'* f0);
t(:, i)=e0*w(:, i) calcula la puntuación del componente ti
alpha(:, i)=e0 '*t( :,i)/(t(:,i)'*t(:,i)) calcula alpha_i, donde (t (:,i)'*t(:,i)) es equivalente a norm(t (:, i))^2
e=e0-t(:,i)*alpha(:,i)' Calcular la matriz residual
e0=e;
p >Calcular la matriz w*
Si i==1
w_star(:i)=w(:, i);
else p>
for j=1:i-1
temp=temp*(eye(col-1)-w(:,j)*alpha(:,j)');< / p>
end
w_star(:,i)=temp*w(:,i);
end
Calcula el siguiente ss( i ) valor
beta=[t(:,1:i), ones(num,1)]\f0 Encuentra los coeficientes de la ecuación de regresión
beta(end,:) = []; Eliminar el término constante del análisis de regresión
cancha=f0-t(:,1:i)* beta; Encontrar la matriz residual
ss(i)=sum; (sum (cancha.^2)); Encuentra la suma de errores al cuadrado
Cálculo posterior presiona(i)
para j=1: num
t1 =t(: , 1: i); f1=f0;
she_t=t1(j,:); she_f=f1(j,:); >
t1(j,:)=[]; f1(j,:)=[]; Eliminar el punto de observación j
beta1=[t1, ones(num-1, 1)] \f1 ; Encuentra los coeficientes utilizados para el análisis de regresión
beta1(end,:)=[]; Elimina el término constante del análisis de regresión
cancha=she_f-she_t*beta1; la dirección del residuo
Importe
press_i(j)=sum(cancha.^2
end
press(i)=sum(press_i)
<); p>si igt;1Q_h2(i)=1-presione(i)/ss(i-1)
si no
Q_h2(1) =1
end
if Q_h2(i)lt;0.0985
fprintf('El número propuesto de componentes r=d',i); p> p>
r=i;
romper
fin
fin
beta_z=[t, unos(núm , 1 )]\f0; Encuentre el coeficiente de regresión de Y normalizado en relación con el vector de puntuación del componente principal t
beta_z(end,:) =[]; xishu=w_star *beta_z; Encuentre el coeficiente de regresión de Y estandarizado en X, que es el coeficiente de regresión de datos estandarizados.
mu_x=aver(1:col-1); =aver(fin) ;
sig_x=stdcov(1:col-1); sig_y=stdcov(fin);
ch0=mu_y-mu_x./sig_x*sig_y*xishu ; Calcular la regresión de datos originales El término constante de la ecuación
xish=xishu'. /sig_x*sig_y; Calcula los coeficientes de la ecuación de regresión de datos original, cada columna es una ecuación de regresión
Rc=corrcoef(x0*xish' ch0, y0)
sol=[ ch0; xish'] muestra los coeficientes de la ecuación de regresión, cada columna es una ecuación y el primer número de cada columna es el término constante función de variable multidependiente y=pls(pz, Xnum, Ynum)
[row, col ]=size(pz);
aver=mean(pz);
stdcov=std(pz); Encuentra la media y la desviación estándar
rr=corrcoef(pz).
Encuentre la matriz de coeficientes de correlación
data=zscore(pz); normalización de datos
stdarr = (pz - aver(ones(row, 1),:).)./ stdcov ( ones(row, 1),:); variables independientes estandarizadas
n=Xnum; m=Ynum; n es el número de variables independientes, m es el número de variables dependientes
x0 =pz(:, 1:n); y0=pz(:, n 1: end); Extrae los datos originales de las variables independientes y dependientes
e0=data(:, 1:n) ; f0 =data(:, n 1: end); Extrae datos de variables independientes y dependientes estandarizadas
num=size(e0, 1); temp=eye( n); matriz diagonal
para i=1: n
Lo siguiente calculará el vector de puntuación de w, w* y t vector de puntuación,
matrix= e0'*f0*f0'*e0;
[vec, val]=eig(matrix) Encuentra valores propios y vectores propios
val=diag(val ); Proponer elemento diagonal
[val, ind]=sort(val,'descend');
w(:, i)=vec(:, ind(1)) propone la característica máxima El vector propio correspondiente al valor
t(:,i)=e0*w(:,i) calcula la puntuación del componente ti
alpha(:,i )=e0'* t(:,i)/(t(:,i)'*t(:,i)) calcula alpha_i, donde (t(:i)'*t(:,i)) es equivalente a norm(t(:, i))^2
e=e0-t(:,i)*alpha(:,i)' Calcular la matriz residual
e0=e ;
Calcular la matriz w*
Si 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
Calcular el valor de ss(i) a continuación
beta=[t(:,1:i),ones(num,1)]/f0 Encuentra los coeficientes de la ecuación de regresión
beta( end,:)=[]; Eliminar el término constante para el análisis de regresión
cancha= f0-t(:,1:i)*beta Encuentra la matriz residual
ss( i)=sum(sum(cancha. ^2)); Encuentra la suma de errores al cuadrado
El siguiente cálculo presiona(i)
para j=1: num
t1=t(:, 1 :i); f1=f0;
she_t=t1(j,:); she_f=f1(j,:); p>
t1(j,: )=[]; f1(j,:)=[]; Eliminar la j-ésima observación
beta1=[t1, ones(num-1, 1)] \f1; Buscar para el análisis de regresión Coeficiente de
beta1(end,:)=[]; Eliminar el término constante del análisis de regresión
cancha=she_f-she_t*beta1; vector residual
press_i(j)=sum(cancha.^2);
fin
presionar_i(i)= suma(presionar_i)
si igt 1
Q_h2(i)=1-presionar; (i)/ss(i-1)
else
Q_h2(1)=1
fin
si Q_h2(i )lt; 0.0985
fprintf('Número de componentes propuestos r=d',i);
r=i;
end
end
beta_z=[t(:,1:r),ones(num,1)]/f0; encuentre el coeficiente de regresión de Y estandarizado en t
beta_z( end ,:)=[]; Eliminar el término constante
xishu=w_star(:,1:r)*beta_z; Encuentre el coeficiente de regresión de Y estandarizado en X, que es el coeficiente de regresión de datos estandarizados. Cada columna es una ecuación de regresión
mu_x=aver(1:n);mu_y=aver(n 1:end);
mu_x=ver(n 1:end); mu_y=ver( n 1: fin);