<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri","sans-serif";
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;}
@page Section1
{size:612.0pt 792.0pt;
margin:70.85pt 3.0cm 70.85pt 3.0cm;}
div.Section1
{page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=PT-BR link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal>Boa tarde pessoal,<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> Estava tentando comparar dois grupos de indivíduos com 5
variáveis, usando o teste de t^2 de Hotelling, ate ai tudo bem, mais quando
simulei os indivíduos e suas variáveis com pelos menos um NA no vetor, a função
não conseguia realizar o cálculo, dando a mensagem<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Erro em solve.default(v) : <o:p></o:p></p>
<p class=MsoNormal> sistema é computacionalmente singular: condição recíproca
número = 0<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Tentei inserir na função na.omit(), sem sucesso, alguem
poderia me dar um help, obrigado, segue a rotina:<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>#####################Teste de t multivariado de
Hotellings############################################<o:p></o:p></p>
<p class=MsoNormal>##Depois de algum teste de cluster (ex. Mahalanobis) vou
observar se os dois grupos possuem diferenças<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>##Grupo 1<o:p></o:p></p>
<p class=MsoNormal>ind.pop.1<-1:30 #######Os indivíduos<o:p></o:p></p>
<p class=MsoNormal>med.pop.1<-data.frame(mma=Mod(rnorm(30)),mmc=Mod(rnorm(30)),mmd=Mod(rnorm(30)),mca=Mod(rnorm(30)),mca2=Mod(rnorm(30)))#######As
medidas dos indivíduos<o:p></o:p></p>
<p class=MsoNormal>dados.pop.1<-cbind(ind.pop.1,med.pop.1)#######Planilha
com os indivíduos e suas medidas<o:p></o:p></p>
<p class=MsoNormal>head(dados.pop.1)<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>##Grupinho Oligo 3<o:p></o:p></p>
<p class=MsoNormal>ind.pop.3<-1:6 #######Os indivíduos<o:p></o:p></p>
<p class=MsoNormal>med.pop.3<-data.frame(mma=Mod(rnorm(6)),mmc=Mod(rnorm(6)),mmd=Mod(rnorm(6)),mca=Mod(rnorm(6)))#######As
medidas dos indivíduos<o:p></o:p></p>
<p class=MsoNormal>mca2<-c(1.22222,1.666666,0.4500000,NA ,2.33333,0.789000)<o:p></o:p></p>
<p class=MsoNormal>dados.pop.3<-cbind(ind.pop.3,med.pop.3,mca2)#######Planilha
com os indivíduos e suas medidas<o:p></o:p></p>
<p class=MsoNormal>head(dados.pop.3)<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>hotelling = function(y1, y2) { ### Função que faz o cálculo
de Hotellings by
http://sas-and-r.blogspot.com/2010/05/example-737-calculation-of-hotellings.html<o:p></o:p></p>
<p class=MsoNormal> <span lang=EN-US># check the appropriate dimension<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US> k = ncol(y1)<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US> </span>k2 = ncol(y2)<o:p></o:p></p>
<p class=MsoNormal><span lang=EN-US> if (k2!=k)<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US> stop("input matrices must have the
same number of columns: y1 has ",<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US> k, " while y2 has ", k2)<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US> # calculate sample size and observed
means<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US> </span>n1 = nrow(y1)<o:p></o:p></p>
<p class=MsoNormal> n2 = nrow(y2)<o:p></o:p></p>
<p class=MsoNormal> <span lang=EN-US>ybar1= apply(y1, 2, mean); ybar2=
apply(y2, 2, mean)<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US> diffbar = ybar1-ybar2<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US> # calculate the variance of the
difference in means<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US> </span>v = ((n1-1)*var(y1)+
(n2-1)*var(y2)) /(n1+n2-2)<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> <span lang=EN-US># calculate the test statistic and
associated quantities<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US> </span>t2 =
n1*n2*diffbar%*%solve(v)%*%diffbar/(n1+n2)<o:p></o:p></p>
<p class=MsoNormal> f = (n1+n2-k-1)*t2/((n1+n2-2)*k)<o:p></o:p></p>
<p class=MsoNormal> pvalue = 1-pf(f, k, n1+n2-k-1)<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal> <span lang=EN-US># return the list of results<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US> return(list(pvalue=pvalue, f=f, t2=t2,
diff=diffbar))<o:p></o:p></span></p>
<p class=MsoNormal>}<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>## Fazendo o teste entre o grupo 1 e 3<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><span lang=EN-US>(result=
hotelling(dados.pop.1,dados.pop.3))<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
<p class=MsoNormal><b>Alexandre dos Santos<o:p></o:p></b></p>
<p class=MsoNormal><b>Ingenieur forestier, Msc.<o:p></o:p></b></p>
<p class=MsoNormal><b>INRA- Biostatistique et Processus Spatiaux (BioSP)<o:p></o:p></b></p>
<p class=MsoNormal><b><span lang=EN-US>Domaine Saint-Paul<br>
Site Agroparc <br>
84914 - Avignon - France<br>
Tél. : +33 (0)6 87 95 16 29<o:p></o:p></span></b></p>
<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>
</div>
</body>
</html>