\subsection{Application to multivariate continuous data}
\label{sec:mvcdata}


\setkeys{Gin}{width=0.99\textwidth}

Nesta seção nós mostramos rapidamente como utilizar a 
função \code{skater()} para fazer uma análise de 
agrupamentos com restrição espacial dos dados de 
violent crime rates by US State. 
Estes dados estão disponíveis no \R, \cite{R}. 
Nós consideramos a análise de 48 estados continentais, 
excluindo Alaska e Hawaii, e o conjunto de três 
tipos de crimes: murder, assault and rape. 
\begin{Schunk}
\begin{Sinput}
> dpad <- scale(dsel <- USArrests[-c(2, 11), c(1, 2, 4)])
\end{Sinput}
\end{Schunk}

Nós utilizamos o mapa dos EUA disponível no 
pacote \pkg{maps}, \cite{maps} e utilizamos 
a função \code{map2SpatialPolygons()} para 
converter o mapa para o formato do pacote 
\pkg{sp} e utilizar a função \code{map2nb()} 
para encontrar a lista de vizinhança por 
contiguidade.
\begin{Schunk}
\begin{Sinput}
> require(maps)
> usa.m <- map("state", fill = TRUE, col = "transparent", plot = FALSE)
> require(spdep)
> IDs <- sapply(strsplit(usa.m$names, ":"), function(x) x[1])
> usa.pl <- map2SpatialPolygons(usa.m, IDs = IDs)
> usa48.nb <- subset(poly2nb(usa.pl), c(rep(T, 7), F, rep(T, 41)))
\end{Sinput}
\end{Schunk}

A análise inicia com o cálculo de custos das arestas 
indicadoras de vizinhança entre os estados. 
O cálculo de custos é feito com a função \code{nbcosts()}. 
Há várias funções de distância implementadas e 
é possível utilizar uma função definida pelo usuário. 
Nós vamos utilizar a default, que é a distância Euclidiana. 
Escolhendo esta distância, é melhor considerar os dados 
padronizados.
\begin{Schunk}
\begin{Sinput}
> nbc.e <- nbcosts(usa48.nb, dpad)
\end{Sinput}
\end{Schunk}
A seguir, nós juntamos a lista de custos com a lista de 
vizinhança, criando um objeto da classe \code{listw}. 
\begin{Schunk}
\begin{Sinput}
> nbw.e <- nb2listw(usa48.nb, nbc.e, style = "B")
\end{Sinput}
\end{Schunk}

A partir da lista de vizinhança ponderada, 
podemos encontrar a árvore geradora mínima (AGM) 
usando a função \code{mstree()}. Esta função 
implementa o algoritmo de Prin \cite{prin:56}. 
Esta função tem dois argumentos, o primeiro deve ser 
um objeto \code{listw} e o segundo um inteiro indicando 
o nó inicial. Este argumento pode ser \code{NULL} e 
neste caso será sorteado aleatóriamente um nó inicial. 
\begin{Schunk}
\begin{Sinput}
> mst.e <- mstree(nbw.e)
\end{Sinput}
\end{Schunk}
O resultado da função \code{mstree()} é um objeto da 
classe \code{mst}. Este objeto é uma matriz de três 
colunas, cada linha contendo os nós do vértice e o custo. 


\setkeys{Gin}{width=0.99\textwidth}

\begin{figure}
\centering
\includegraphics{figs/fig-plotdatausarrests}
\label{fig:datausarrests}
\caption{Nesta figura nós plotamos um mapa para 
cada taxa de crimes em tons de cinza proporcionais 
à taxa de crime e a AGM gerada considerando a 
distância Euclidiana}
\end{figure}

A partir da AGM, nós utilizamos a função \code{skater()} 
para fazer podar as arestas e gerar os grupos de áreas 
homogêneas. Na função \code{skater()} podemos entar com 
a AGM e realizar $k-1$ cortes de arestas, gerando $k$ grupos. 
Nesta função podemos utilizar várias funções de 
homogeneidade, inclusive alguma definida pelo usuário. 
Nós utilizamos a distância Euclidiana, a default. 
Gerando inicialmente 4 grupos
\begin{Schunk}
\begin{Sinput}
> res.e4 <- skater(mst.e[, 1:2], dpad, 3)
\end{Sinput}
\end{Schunk}
Essa função também pode receber como input um 
objeto da classe \code{skater} e fazer podas 
adicionais. Nós geramos 5, 6 e 7 grupos 
usando essa funcionalidade:
\begin{Schunk}
\begin{Sinput}
> res.e5 <- skater(res.e4, dpad, 1)
> res.e6 <- skater(res.e5, dpad, 1)
> res.e7 <- skater(res.e6, dpad, 1)
\end{Sinput}
\end{Schunk}

Na figura~\ref{fig:res4567e} nós plotamos o mapa dos 
EUA considerando 4, 5, 6 e 7 grupos. 
As cores são tons de cinza proporcionais a soma das 
médias em cada grupo das três taxas de crimes. 
O grafo sobreposto é a AGM gerada e dessa forma 
podemos observar quais arestas foram podadas. 


\setkeys{Gin}{width=0.99\textwidth}

\begin{figure}
\centering
\includegraphics{figs/fig-plot1skater}
\label{fig:skt1}
\caption{Results by SKATER to obtain four to 
  seven groups using Euclidean distance.}
\end{figure}

