<div dir="ltr">Leonardo,<div><br></div><div>Você já está no terceiro post sobre o seu problema sem que ninguém tenha feito uma intervenção, é o que a gente chama de « depuração confessional » (veja <a href="https://books.google.com.br/books?id=4miO-X83hmUC&pg=PA255&lpg=PA255&dq=C+programming+confessional+debugging&source=bl&ots=ECCCrPnkdL&sig=8EjauFqGZhBBnIcBL3w6TCz9m2o&hl=en&sa=X&ved=0ahUKEwiBqqTam63MAhWDfpAKHYCsC7kQ6AEIHTAA#v=onepage&q=C%20programming%20confessional%20debugging&f=false">https://books.google.com.br/books?id=4miO-X83hmUC&pg=PA255&lpg=PA255&dq=C+programming+confessional+debugging&source=bl&ots=ECCCrPnkdL&sig=8EjauFqGZhBBnIcBL3w6TCz9m2o&hl=en&sa=X&ved=0ahUKEwiBqqTam63MAhWDfpAKHYCsC7kQ6AEIHTAA#v=onepage&q=C%20programming%20confessional%20debugging&f=false</a>)!!</div><div><br></div><div>Sendo específico com relação ao que você reporta, acho que você deve tentar entender se o problema é com os dados ou com os métodos:</div><div><br></div><div>Escolha um dos conjuntos de dados, ou o "USArrest" ou o "api" e aplique as duas formas de fazer a ACP, analise os resultados.</div><div><br></div><div>Por último, e imagino que não seja importante para você desvendar o mistério que lhe apareceu, coloco a seguinte dúvida, qual a vantagem de fazer toda essa ginástica se para gerar o tal resultado que não necessitaria do comando para "<span style="font-family:Arial;font-size:12.8px"> </span><span style="font-family:Arial;font-size:12.8px">análise de componentes principais propriamente dito" você usa coeficientes, loadings, etc. obtidos desse comando?</span></div><div><span style="font-family:Arial;font-size:12.8px"><br></span></div><div><span style="font-family:Arial;font-size:12.8px">HTH</span></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-04-24 17:13 GMT-03:00 Leonardo Ferreira Fontenelle <span dir="ltr"><<a href="mailto:leonardof@leonardof.med.br" target="_blank">leonardof@leonardof.med.br</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><u></u>




<div><div style="font-family:Arial">Parece que não sou a única pessoa com dificuldade em gerar esse vetor (quase) perfeitamente correlacionado com o primeiro vetor. O próprio comando predict não consegue!<br></div>
<div style="font-family:Arial"> </div>
<div style="font-family:Arial">Retomando os exemplos anteriores:<br></div><span class="">
<div style="font-family:Arial"> </div>
<div style="font-family:Arial"><span style="font-family:menlo,consolas,"courier new",monospace,sans-serif">pca1 <- prcomp(USArrests, scale = TRUE)</span><span style="font-family:menlo,consolas,"courier new",monospace,sans-serif"><br></span></div>
</span><div style="font-family:Arial"><span style="font-family:menlo,consolas,"courier new",monospace,sans-serif">predpca1 <- predict(pca1, USArrests)</span><span style="font-family:menlo,consolas,"courier new",monospace,sans-serif"><br></span></div>
<div style="font-family:Arial"><span style="font-family:menlo,consolas,"courier new",monospace,sans-serif">cor(pca1$x[, "PC1"], predpca1[, "PC1"])</span><span style="font-family:menlo,consolas,"courier new",monospace,sans-serif"><br></span></div>
<div style="font-family:Arial"><span style="font-family:menlo,consolas,"courier new",monospace,sans-serif"># resultado: 1,00</span><br></div>
<div style="font-family:Arial"> </div><span class="">
<div style="font-family:Arial"><span style="font-family:menlo,consolas,"courier new",monospace,sans-serif">library("survey")<br></span></div>
<div><span style="font-family:menlo,consolas,"courier new",monospace,sans-serif">data(api)<br></span></div>
<div><span style="font-family:menlo,consolas,"courier new",monospace,sans-serif">dclus2 <- svydesign(id = ~ dnum + snum, fpc = ~ fpc1 + fpc2, data = apiclus2)<br></span></div>
<div style="font-family:Arial"><span style="font-family:menlo,consolas,"courier new",monospace,sans-serif">pca2 <- svyprcomp(~ api99 + api00 + ell, design = dclus2, scale = TRUE, scores = TRUE)<br></span></div>
</span><div style="font-family:Arial"><span style="font-family:menlo,consolas,"courier new",monospace,sans-serif">predpca2 <- predict(pca2, dclus2$variables)<br></span></div>
<div style="font-family:Arial"><span style="font-family:menlo,consolas,"courier new",monospace,sans-serif">cor(pca2$x[, "PC1"], predpca2[, "PC1"])<br></span></div>
<div style="font-family:Arial"><span style="font-family:menlo,consolas,"courier new",monospace,sans-serif"># resultado: 0,506</span><br></div>
<div style="font-family:Arial"> </div>
<div style="font-family:Arial">Isso é um erro do  svyprcomp??<span class="HOEnZb"><font color="#888888"><br></font></span></div><span class="HOEnZb"><font color="#888888">
<div style="font-family:Arial"> </div>
<div><div><a href="http://lattes.cnpq.br/9234772336296638" title="Currículo Lattes" target="_blank">Leonardo Ferreira Fontenelle</a><br></div>
</div></font></span><div><div class="h5">
<div> </div>
<div> </div>
<div>Em Dom 24 abr. 2016, às 16:11, Leonardo Ferreira Fontenelle escreveu:<br></div>
<blockquote type="cite"><div>Em Dom 24 abr. 2016, às 00:16, Leonardo Ferreira Fontenelle escreveu:<br></div>
<blockquote type="cite"><div style="font-family:Arial">Boa tarde a todos!<br></div>
<div style="font-family:Arial"> <br></div>
<div style="font-family:Arial">Estou tentando escrever os resultados de uma análise de componentes principais de forma que os leitores possam calcular o primeiro componente a partir dos dados sem a necessidade de utilizar um comando de análise de componentes principais propriamente dito. Minha ideia é informar a codificação das variáveis, as cargas, os desvios-padrão, e então orientar os leitores a multiplicar os valores das variáveis pelas cargas e dividir pelos desvios-padrão e então somar tudo. Minha expectativa é de que o resultado seja altamente correlacionado àquele obtido por uma análise de componentes principais propriamente dita. No entanto, como explico a seguir, não estou conseguindo, e de alguma forma isso tem a ver com eu estar usando svyprcomp() em vez de prcomp().<br></div>
<div style="font-family:Arial"> <br></div>
<div style="font-family:Arial">Para começar, mostro uma situação em que isso funciona:<br></div>
<div style="font-family:Arial"> <br></div>
<div style="font-family:Arial">pca1 <- prcomp(USArrests, scale = TRUE)<br></div>
<div style="font-family:Arial">table1 <- data.frame(loadings = pca1$rotation[, "PC1"], scale = pca1$scale, coef = NA_real_, row.names = row.names(pca1$rotation))<br></div>
<div style="font-family:Arial">table1$coef <- table1$loadings / table1$scale<br></div>
<div style="font-family:Arial">firstcomponent1 <- with(USArrests, Murder * table1["Murder", "coef"] + Assault * table1["Assault", "coef"] + UrbanPop * table1["UrbanPop", "coef"] + Rape * table1["Rape", "coef"])<br></div>
<div style="font-family:Arial">cor(firstcomponent1, pca1$x[, "PC1"])<br></div>
<div style="font-family:Arial"># resultado: 1,00<br></div>
<div style="font-family:Arial"> <br></div>
<div style="font-family:Arial">Agora, uma situação onde isso não funciona:<br></div>
<div style="font-family:Arial"> <br></div>
<div style="font-family:Arial">library("survey")<br></div>
<div style="font-family:Arial">data(api)<br></div>
<div style="font-family:Arial">dclus2 <- svydesign(id = ~ dnum + snum, fpc = ~ fpc1 + fpc2, data = apiclus2)<br></div>
<div style="font-family:Arial">pca2 <- svyprcomp(~ api99 + api00 + ell, design = dclus2, scale = TRUE, scores = TRUE)<br></div>
<div style="font-family:Arial">table2 <- data.frame(loadings = pca2$rotation[, "PC1"], scale = pca2$scale, coef = NA_real_, row.names = row.names(pca2$rotation))<br></div>
<div style="font-family:Arial">table2$coef <- table2$loadings / table2$scale<br></div>
<div style="font-family:Arial">firstcomponent2 <- with(apiclus2, api99 * table2["api99", "coef"] + api00 * table2["api00", "coef"] + ell * table2["ell", "coef"])<br></div>
<div style="font-family:Arial">cor(firstcomponent2, pca2$x[, "PC1"])<br></div>
<div style="font-family:Arial"># resultado: 0,506<br></div>
<div style="font-family:Arial"> <br></div>
<div style="font-family:Arial">Como eu consigo cargas ("loadings") e desvios-padrão ("scale") que eu possa usar de forma a conseguir calcular à mão algum vetor altamente correlacionado com o primeiro componente do svyprcomp()?<br></div>
<div style="font-family:Arial"> <br></div>
<div style="font-family:Arial">Grato!<br></div>
<div style="font-family:Arial"> <br></div>
<div><div><a href="http://lattes.cnpq.br/9234772336296638" title="Currículo Lattes" target="_blank">Leonardo Ferreira Fontenelle</a><br></div>
</div>
<div style="font-family:Arial"> <br></div>
</blockquote><div style="font-family:Arial"> <br></div>
<div style="font-family:Arial">O problema tem a ver com a ponderação das observações. Não apenas essa parece ser a única diferença entre prcomp() e svyprcomp() (a função não leva em consideração correlações dentro dos conglomerados) mas também usar svyprcom() num delineamento gera componentes com uma correlação quase perfeita com os índices criados à mão como no e-mail anterior.<br></div>
<div style="font-family:Arial"> <br></div>
<div style="font-family:Arial">Digitar "svyprcomp" na linha de comando do R, sem aspas ou parênteses, mostra o código-fonte. Ele me parece usar uma abordagem equivalente à da resposta <a href="http://stats.stackexchange.com/a/113488" target="_blank">http://stats.stackexchange.com/a/113488</a>. Mesmo assim, não consigo entender de que forma posso criar um índice à mão que seja (quase) perfeitamente correlacionado com o primeiro componente.<br></div>
<div style="font-family:Arial"> <br></div>
<div><div><a title="Currículo Lattes" href="http://lattes.cnpq.br/9234772336296638" target="_blank">Leonardo Ferreira Fontenelle</a><br></div>
</div>
</blockquote><div style="font-family:Arial"> </div>
</div></div></div>

<br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div><br></div>