




Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
La solución de un ejercicio de Análisis Canónico de Poblaciones, utilizando el fichero de datos 250olmos.txt y las funciones canp.m y regconf.m. Se explica detalladamente el proceso para obtener las coordenadas canónicas de X, las matrices de dispersión dentro y entre poblaciones, los test de comparación de medias y covarianzas, y los ejes canónicos. Además, se muestran las regiones de confianza para los individuos medios. útil para estudiantes de Estadística y Empresas que estén cursando Análisis Multivariante.
Tipo: Ejercicios
1 / 8
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!





% La función [mY,V,B,W,percent,Test1,texto1,Test2,texto2]=canp(X,n) % realiza el análisis canónico de g poblaciones, es decir, % representa las g poblaciones de forma óptima a lo largo de % unos ejes canónicos ortogonales. % Para cada población i (i=1,2,...,g) se tienen las medidas de % p variables X1,X2,...,Xp sobre n(i) individuos, % con n(1)+n(2)+...+n(g)=N. % % Entradas: % X: es una matriz (N,p) que contiene las observaciones de p % variables (en columna) sobre los individuos de g poblaciones % (en fila), % n: es un vector que contiene el número de individuos de cada % población. % % Salidas: % mY: matriz que contiene las nuevas coordenadas de los % individuos medios (en fila), % V: matriz de vectores propios de B respecto de W (en columna), % es decir, las columnas de V definen los ejes canónicos, % B: matriz de dispersión entre poblaciones (between), % W: matriz de dispersión dentro de cada población (within), % percent: porcentaje de variabilidad explicado, % Test1: vector que contiene el valor de la F de Fisher, sus % grados de libertad y el p-valor [F(n1,n2) n1 n2 p_valor1] % obtenidos en el test de comparación de medias, % texto1: texto resumen del resultado de Test1, % Test2: vector que contiene el valor de la chi-cuadrado, sus % grados de libertad y el p-valor [chi(q) q p_valor2] % obtenidos en el test de comparación de covarianzas, % texto2: texto resumen del resultado de Test2. % function [mY,V,B,W,percent,Test1,texto1,Test2,texto2]=canp(X,n) [N,p]=size(X); g=length(n); % vector de etiquetas para las poblaciones for i=1:g lab(i,:)=sprintf('%3g',i); end % n0(1)=n(1);
for i=2:g n0(i)=n0(i-1)+n(i); end % % cálculo de los individuos medios % mX(1,:)=ones(1,n(1))X(1:n0(1),:)/n(1); for i=2:g mX(i,:)=ones(1,n(i))X(n0(i-1)+1:n0(i),:)/n(i); end % % cálculo de la matriz de dispersión dentro de cada población % H1=eye(n(1))-ones(n(1))/n(1); W=X(1:n0(1),:)'H1X(1:n0(1),:); logH1=n(1)log(det(W/n(1))); for i=2:g Hi=eye(n(i))-ones(n(i))/n(i); Ci=X(n0(i-1)+1:n0(i),:)'HiX(n0(i-1)+1:n0(i),:); W=W+Ci; logH1=logH1+n(i)log(det(Ci/n(i))); end S=W/(N-g); % % cálculo de la matriz de dispersión entre poblaciones % mmX0=n(1)mX(1,:); for i=2:g mmX=mmX0+n(i)mX(i,:); mmX0=mmX; end mmX=mmX/N; B0=n(1)(mX(1,:)-mmX)'(mX(1,:)-mmX); for i=2:g B=B0+n(i)(mX(i,:)-mmX)'(mX(i,:)-mmX); B0=B; end % % Test de comparación de medias (Lambda de Wilks). % Conviene rechazar esta hipótesis. % lambda=det(W)/det(W+B); [Fmit,n1,n2]=wilkstof(lambda,p,N-g,g-1); p_valor1=1-fcdf(Fmit,n1,n2); Test1=[Fmit n1 n2 p_valor1]; texto1=char('Test1: Igualdad de medias (Lambda de Wilks): p-valor=',num2str(p_valor1)); % % Test de comparación de covarianzas (Razón de verosimilitudes % sin la corrección de Box). Conviene no rechazar esta hipótesis. % logH0=Nlog(det(W/N)); chi=abs(logH0-logH1); q=(g-1)p(p+1)/2; p_valor2=1-chi2cdf(chi,q); Test2=[chi q p_valor2]; texto2=char('Test2: Igualdad de covarianzas (test de Bartlett): p- valor=',num2str(p_valor2)); % % cálculo de los ejes canónicos % [V,D]=eig(B,S); [z,i]=sort(-diag(real(D))); d=-z; V=real(V(:,i)); m=min(g-1,p); V=V(:,1:m); % % estandarización de los ejes canónicos V'SV=Id. V=Vinv(diag(sqrt(diag(V'SV)))); % % variabilidad explicada % for i=1:m
% La función r=regconf(mY,n,p,conf) dibuja las regiones de confianza para los individuos % medios de g poblaciones obtenidos a través de la función CANP. % En cada población se miden p variables sobre n(i) individuos (i=1,2,...,g) con % n(1)+n(2)+...+n(g)=N. % % Entradas: % mY = las coordenadas canónicas de los individuos medios, % n = vector columna que contiene el numero de individuos de cada población, % p = número de variables medidas sobre cada población, % conf = nivel de confianza (0<=conf<=1) para el que % se construyen las regiones confidenciales % (por ejemplo, conf=0.90). % % Salidas: % r = vector que contiene los radios de las esferas. % function r=regconf(mY,n,p,conf) g=length(n);
N=sum(n); % valor crítico de una F(p,N-g-p+1) para el nivel de % confianza (conf) especificado. F=finv(conf,p,N-g-p+1); % % cálculo de las regiones confidenciales (al conf100%) para los individuos medios. % for i=1:g r(i)=sqrt(Fp(N-g)/((N-g-p+1)n(i))); end for i=0:0.01:2pi theta(floor(i100+1))=i; end % % vector de etiquetas para los individuos medios % for i=1:g lab(i,:)=sprintf('%3g',i); end % hold on plot(mY(:,1),mY(:,2),'^r','MarkerFaceColor',[1 0 0]) xlabel('1er. eje canonico','FontSize',10) ylabel('2o. eje canonico','FontSize',10) % for i=1:g for j=1:length(theta) cercle(j,1)=mY(i,1)+cos(theta(j))r(i); cercle(j,2)=mY(i,2)+sin(theta(j))r(i); end plot(cercle(:,1),cercle(:,2),'.m','MarkerSize',4) end pconf=conf*100; title(['Regiones confidenciales para los individuos medios al ',num2str(pconf),'%'],'FontSize',12) for i=1:g text(mY(i,1),mY(i,2),lab(i,:)); end hold off end