[R-br] RES: skater e deldir

Hélio Gallo Rocha heliogallorocha em gmail.com
Quarta Outubro 22 09:07:31 BRST 2014


Mauro, bom dia.


Não sei qual seu objetivo no uso desta função, assim vou te passar o
histórico e se quiser dando idéias, será bem vindo
Estou estudando geoestatística e é interessante saber que regiões tem seus
atributos "parecidos".
A idéia inicial era utilizar a função skater do pacote spdep.

Como tenho pontos teria de criar poligonos, que foi realizado com a função
deldir, e listar os poligonos.

A listagem era um problemão, pois teria de crira poligono por poligono,
como no CRM inicial.
Problema resolvido com a preciosa ajuda do Rafael. que sugeriu usar a
função poly2nb do pacote sddep

Com  a função deldir apenas gera poligonos assim foi necessário inserir
dados aos mesmo e torná-los um SpatialPolygonsDataFrame

Dai pra frente o código está em estudo, veja:
require(deldir)  ;require(spdep)
## 1. Coordenadas
n <- 40
set.seed(47)
x <- runif(n)
y <- runif(n)
plot(x,y)
## 2. Dados
 set.seed(1389)
dados <- data.frame(rnorm(n,10,sd=5), rnorm(n,15,sd=5),rnorm(n,20,sd=5))
colnames(dados)<- paste("var",1:3,sep="")
row.names(dados) <- paste("reg", 1:n, sep = "")
dados
class(dados)

## 3. gerando coordenadas dos poligonos com função deldir
d <- deldir(x,y)

ttt <- triang.list(d)
plot(ttt)
plot(ttt,border="red",showrect=TRUE)
sss <- tile.list(d)
plot(sss)
plot(ttt,add=TRUE,border="blue")

##  4. Gerando poligonos
### Rafael  Tieppo----  G R A N D E   A J U D A ! ! ! !


FUN_VOR_MAT <- function (A,TT) #TT é  o arquivo, N o número do POL
    {
        AA <- 1
        BB <- 2
        NROW <- length (A[[TT]]$x) + 1 #add primeiro ponto


        VORONOI_MATRIX <- matrix(0,NROW,2)
        VORONOI_MATRIX[1:NROW,AA] <- A[[TT]]$x[1:NROW]
        VORONOI_MATRIX[1:NROW,BB] <- A[[TT]]$y[1:NROW]
        VORONOI_MATRIX[NROW,AA]   <- A[[TT]]$x[1] #+ 1 add primeiro ponto
        VORONOI_MATRIX[NROW,BB]   <- A[[TT]]$y[1] #+ 1 add primeiro ponto

        if(TT == NROW){
        print("17/10/2014, [hidden email] ")}
        return(VORONOI_MATRIX)
    }

## Agora vc vai usar a funcao:
AREAS<-  lapply(1:length(sss), function (x) ( FUN_VOR_MAT(sss,x))  )
        summary(AREAS)
## 5. Formando Polygons
POLS<-  lapply(1:length(AREAS), function(x)
Polygons(list(Polygon(AREAS[[x]])),
       ID = paste("reg", x, sep = "")))
 summary(POLS)
 class(POLS)


 SPol <- SpatialPolygons(POLS)
 class(SPol)
  plot(SPol)
  bbox(SPol)

## 6. Inserindo dados aos poligonos
 SPolDF <- SpatialPolygonsDataFrame(SPol, dados)
plot(SPolDF)


## 7.   Código para visualizar áreas "parecidas"

## em estudo
(coordenadas=cbind(x,y))
class(coordenadas)


##
rn <- sapply(slot(SPolDF, "polygons"), function(x) slot(x, "ID"))

knn1 <- knearneigh(coordenadas, 1)

knn2 <- knearneigh(coordenadas, 2)

nb1 <- knn2nb(knn1, row.names=rn)

nb2 <- knn2nb(knn2, row.names=rn)

##1
diffs <- diffnb(nb2, nb1)
plot(SPolDF, border="grey")
plot(nb1, coordenadas, add=TRUE)
plot(diffs, coordenadas, add=TRUE, col="red")
title(main=paste("Differences (red) in Columbus GAL weights (black)", "and
polygon generated queen weights", sep="\n"))


##2
xxx <- poly2nb(SPolDF, queen=FALSE)
dxxx <- diffnb(xxx, nb1)
plot(SPolDF, border = "grey")
plot(nb1, coordenadas, add = TRUE)
plot(dxxx, coordenadas, add = TRUE, col = "red")
title(main=paste("Differences (red) in Columbus GAL weights (black)",
 "and polygon generated rook weightsvvv", sep="\n"))

## 3
cards <- card(nb2)
maxconts <- which(cards == max(cards))
if(length(maxconts) > 1) maxconts <- maxconts[1]
fg <- rep("grey", length(cards))
fg[maxconts] <- "red"
fg[nb2[[maxconts]]] <- "green"
plot(SPolDF, col=fg)
title(main="Region with largest number of contiguities")


plot(SPolDF, border="grey")
plot(nb1, coordenadas, add=TRUE)
plot(diffs, coordenadas, add=TRUE, col="red", lty=2)


Abraço

Hélio

Em 21 de outubro de 2014 23:41, Mauro Sznelwar [via R-br] <
ml-node+s2285057n4663338h46 em n4.nabble.com> escreveu:

>  Tentei rodar vosso script, mas a partir daí não foi mais, qual o motivo?
>
> > plot(sss)
>
> > polygon(p1,border="green",lwd=3)
>
> Error in xy.coords(x, y) :
>
>   'x' is a list, but does not have components 'x' and 'y'
>
>
>
>
>
> Caros Elias e Rafael.
>
>
>
> Rafael, obrigado pelo código, vou testar, mas depois de conseguir separar
> os polígonos.
>
> Na realidade é essa a minha dificuldade.
>
>
>
> Fiz uns testes que deram certo, mas estou separando um polígono por vez,
> assim fica muito trabalhoso, de uma olhada no código que é a partir do
> enviado no primeiro post:
>
>
>
>
>
> ## objeto que possui as coordenadas geradas na função deldir é o objeto sss
>
>
>
> ## coordenadas do poligono 01
>
> (x1 <- sss[[1]][2])
>
> (y1 <- sss[[1]][3])
>
>
>
> ## coordenadas do poligono 02
>
> x2 <- sss[[2]][2]
>
> y2 <- sss[[2]][3]
>
> .
>
> .
>
> .
>
> .
>
> .
>
> ## coordenadas do poligono 20
>
> x20 <- sss[[20]][2]
>
> y20 <- sss[[20]][3]
>
>
>
> ## Agrupando as coordenadas num só objeto
>
> (p1 <-c(x1,y1))
>
>
>
> (p2 <-c(x2,y2))
>
>
>
> (p20 <-c(x20,y20))
>
>
>
> ## visualizando  os poligonos
>
> plot(sss)
>
> polygon(p1,border="green",lwd=3)
>
> polygon(p2,border="red",lwd=3)
>
> polygon(p20,border="blue",lwd=3)
>
>
>
> ## Os passos seguintes diferem do seu
>
>
>
> ## tentativa de gerar um SpatialPolygons, que tem de estar fechado, ou
> seja a primeira e a ultima linhas de coordenadas tem de ser a mesma
>
>
>
> (x11 <- c(p1$x, p1$x[1]))
>
> (y11 <- c(p1$y, p1$y[1]))
>
>
>
>
>
> (p1 <- cbind(x11,y11))
>
>
>
> ## transformando em SpatialPolygons
>
> ### Passo 1
>
> linep1=Polygon(p1);class(linep1) #Polygon
>
> linep1
>
>
>
>
>
> ## Passo 2
>
> linep1a=Polygons(list(linep1),ID="a");class(linep1a) #   Polygons
>
> linep1a
>
>
>
> ## Passo 3
>
> linesp=SpatialPolygons(list(linep1a));class(linesp) #SpatialPolygons
>
> linesp
>
>
>
> ## Passo 4
>
> proj4string(linesp) <- CRS("+proj=utm + zone=23s +datum=WGS84")
>
> summary(linesp)
>
> plot(linesp)
>
>
>
> Se puder dar uma mão, agradeço desde já..
>
>
>
> Abraço
>
>
>
> Hélio
>
>
>
> Em 20 de outubro de 2014 13:22, Rafael Tieppo [via R-br] <[hidden email]
> <http://user/SendEmail.jtp?type=node&node=4663338&i=0>> escreveu:
>
> Hélio,
>
>
>
> Após dividir sua área em polígonos, vc terá um conjunto de coordenadas,
> onde cada conjunto será um polígono.
>
> Com esse objeto pronto em forma de lista:
>
>
>
> Passo 1: Formar "Polygons"
>
> POLS <- lapply(1:length(AREAS), function(x)
> Polygons(list(Polygon(AREAS[[x]])),
>
>        ID = paste("reg", x, sep = "")))
>
> Passo 2:Converter em "SpatialPolygons"
>
> POLS <- as.SpatialPolygons.PolygonsList(POLS,
> proj4string=CRS(as.character(NA)))
>
>
>
> Agora vc já pode usar a função  poly2nb()
>
>  poly2nb(POLS)
>
>
>
> Tem um tutorial bem detalhado do professor:
>
> Classes para dados espaciais: o pacote sp
> <http://www.leg.ufpr.br/~paulojus/embrapa/Rembrapa/Rembrapase31.html>
>
>
>
>
>
> [image: image]
> <http://www.leg.ufpr.br/~paulojus/embrapa/Rembrapa/Rembrapase31.html>
>
>
>
>
>
>
>
>
>
>
>
> Classes para dados espaciais: o pacote sp
> <http://www.leg.ufpr.br/~paulojus/embrapa/Rembrapa/Rembrapase31.html>
>
> [next] [prev] [prev-tail] [tail] [up] 31 Classes para dados espaciais: o
> pacote sp
>
> View on *www.leg.ufpr.br*
> <http://www.leg.ufpr.br/~paulojus/embrapa/Rembrapa/Rembrapase31.html>
>
> Preview by Yahoo
>
>
>
>
>
>
>
> *Rafael Tieppo*
>
>
>
> On Sunday, October 19, 2014 7:52 PM, "[hidden email]
> <http://user/SendEmail.jtp?type=node&node=4663312&i=0>" <[hidden email]
> <http://user/SendEmail.jtp?type=node&node=4663312&i=1>> wrote:
>
>
>
> Enviar submissões para a lista de discussão R-br para
>     [hidden email] <http://user/SendEmail.jtp?type=node&node=4663312&i=2>
>
> Para se cadastrar ou descadastrar via WWW, visite o endereço
>     https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> ou, via email, envie uma mensagem com a palavra 'help' no assunto ou
> corpo da mensagem para
>     [hidden email] <http://user/SendEmail.jtp?type=node&node=4663312&i=3>
>
> Você poderá entrar em contato com a pessoa que gerencia a lista pelo
> endereço
>     [hidden email] <http://user/SendEmail.jtp?type=node&node=4663312&i=4>
>
> Quando responder, por favor edite sua linha Assunto assim ela será
> mais específica que "Re: Contents of R-br digest..."
>
>
> Tópicos de Hoje:
>
>   1. Integral ([hidden email]
> <http://user/SendEmail.jtp?type=node&node=4663312&i=5>)
>   2. skater e deldir (Hélio Gallo Rocha)
>   3. Re: Integral (walmes .)
>   4. Re: Integral (Diogo Ferrari)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Sun, 19 Oct 2014 17:23:19 -0200
> From: [hidden email]
> <http://user/SendEmail.jtp?type=node&node=4663312&i=6>
> To: "[hidden email] <http://user/SendEmail.jtp?type=node&node=4663312&i=7>"
> <[hidden email] <http://user/SendEmail.jtp?type=node&node=4663312&i=8>>
> Subject: [R-br] Integral
> Message-ID: <[hidden email]
> <http://user/SendEmail.jtp?type=node&node=4663312&i=9>>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Um anexo em HTML foi limpo...
> URL: <
> http://listas.inf.ufpr.br/pipermail/r-br/attachments/20141019/d7d3470d/attachment-0001.html
> >
> -------------- Próxima Parte ----------
> Um anexo não-texto foi limpo...
> Nome: Integral.jpg
> Tipo: image/jpeg
> Tamanho: 38510 bytes
> Descrição: não disponível
> URL: <
> http://listas.inf.ufpr.br/pipermail/r-br/attachments/20141019/d7d3470d/attachment-0001.jpg
> >
>
> ------------------------------
>
> Message: 2
> Date: Sun, 19 Oct 2014 18:29:49 -0200
> From: Hélio Gallo Rocha <[hidden email]
> <http://user/SendEmail.jtp?type=node&node=4663312&i=10>>
> To: r-br <[hidden email]
> <http://user/SendEmail.jtp?type=node&node=4663312&i=11>>
> Subject: [R-br] skater e deldir
> Message-ID:
>     <CA+[hidden email]
> <http://user/SendEmail.jtp?type=node&node=4663312&i=12>>
> Content-Type: text/plain; charset="utf-8"
>
>
>
> Caros da lista,
>
> Estou tentando implementar o uso de SKATER do pacote spdep.
> Gostaria de contar com a boa vontade dos listeiros para resolver esta
> dificuldade.
>
> Para iniciar o skater tenho de dividir minha área em poligonos.
> Para tal estou usando o pacote deldir. Abaixo um exemplo da própria página
> CRAN.
>
>
> require(deldir)
> set.seed(42)
> x <- runif(20)
> y <- runif(20)
> d <- deldir(x,y)
> (ttt <- triang.list(d)  )
> plot(ttt,border="red",showrect=TRUE)
> (sss <- tile.list(d))
> plot(sss)
> plot(ttt,add=TRUE,border="blue")
>
>
> O objeto ttt lista os conjuntos de três pontos que formam o poligono
>
> Teria uma forma automatizada para gerar estes poligonos no formato shape,
> pois o CRM do skater que tenho utiliza o comando "readShapePoly" do spdep.
>
> Tentei exportar para o formato XLS, mas não foi possível pois o objeto ttt
> não é um data.frame
>
>
>
> Agradeço desde já
> --
> Hélio Gallo Rocha
> IFSULDEMINAS - Câmpus Muzambinho
>
> -------------- Próxima Parte ----------
> Um anexo em HTML foi limpo...
> URL: <
> http://listas.inf.ufpr.br/pipermail/r-br/attachments/20141019/e658abd9/attachment-0001.html
> >
>
> ------------------------------
>
> Message: 3
> Date: Sun, 19 Oct 2014 19:40:44 -0200
> From: "walmes ." <[hidden email]
> <http://user/SendEmail.jtp?type=node&node=4663312&i=13>>
> To: [hidden email] <http://user/SendEmail.jtp?type=node&node=4663312&i=14>
> Subject: Re: [R-br] Integral
> Message-ID:
>     <CAFU=EkZ_E8hLAgXoUk79T7u6qpi4LLtbqrNAvjCXx+[hidden email]
> <http://user/SendEmail.jtp?type=node&node=4663312&i=15>>
> Content-Type: text/plain; charset="utf-8"
>
> ?
> Eu gosto muito de desafios de cálculo mas aprecio muito mais o desafio
> quando sei do que se trata, quando tem contexto. Você não forneceu nenhum.
> Meu julgamento adivinhatório de imprecisão acha que tem a ver com
> estatísticas de ordem. Essa lista tem a prerrogativa de não resolver
> problemas de sala de aula para não tirar do aluno o privilégio do
> conhecimento a se adquirir em resolvê-lo. Espero que não seja esse o caso.
> A lista também pede para não encaminhar conteúdo em anexo. Como se trata de
> uma sequência de desenvolvimento matemático, um opção seria fazer no
> eqneditor (http://www.codecogs.com/latex/eqneditor.php) e colar o código
> latex correspondente, como por exemplo esse código
>
> \begin{align*}
> f(x) &= \theta_y+\theta_2 (x-\theta_x)^2 \\
> &= \theta_y+\theta_2 (x^2-2\theta_x x+\theta_x^2)\\
> &=
>
> \underbrace{(\theta_y+\theta_2\theta_x^2)}_{\beta_0}-\underbrace{2\theta_2\theta_x}_{-\beta_1}
> x+\underbrace{\theta_2}_{\beta_2} x^2\\
> &= \beta_0+\beta_1 x+\beta_2 x^2
> \end{align*}
>
> Aí a coisa funciona como CMR, onde o código é latex. É só recortar esse
> código e colar no eqneditor. O mais experts em latex podem editar sem
> precisar renderizar, inclusive.
>
> À disposição.
> Walmes.
> -------------- Próxima Parte ----------
> Um anexo em HTML foi limpo...
> URL: <
> http://listas.inf.ufpr.br/pipermail/r-br/attachments/20141019/587e8e00/attachment-0001.html
> >
>
> ------------------------------
>
> Message: 4
> Date: Sun, 19 Oct 2014 17:52:04 -0400
> From: Diogo Ferrari <[hidden email]
> <http://user/SendEmail.jtp?type=node&node=4663312&i=16>>
> To: [hidden email] <http://user/SendEmail.jtp?type=node&node=4663312&i=17>
> Subject: Re: [R-br] Integral
> Message-ID: <[hidden email]
> <http://user/SendEmail.jtp?type=node&node=4663312&i=18>>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Caro Andre
>
> Segue abaixo a resposta. Acho porem que existem alguns fóruns mais
> apropriados para perguntas desse tipo. Procure fóruns sobre matemática, ou
> calculo especificamente. Acho que essa lista e mais adequada para questões
> envolvendo programação estatística.
>
> Use integração por partes (no exemplo q estou enviando, não inclui a
> constante na integral indefinida pq vc tem uma integral definida. Portanto,
> apenas inclua os limites de integração no exemplo).
>
>
>
>
> Abracos
>
>
> --
> Diogo Ferrari
> PhD Student
> University of Michigan, Ann Arbor
> Department of Political Science
> E-mail: [hidden email]
> <http://user/SendEmail.jtp?type=node&node=4663312&i=19> <mailto:[hidden
> email] <http://user/SendEmail.jtp?type=node&node=4663312&i=20>>
>
> Open Source! Use R! Use Linux!
>
> "A vida é a arte de tirar conclusões suficientes de dados insuficientes"
>
>
>
> > On Oct 19, 2014, at 3:23 PM, [hidden email]
> <http://user/SendEmail.jtp?type=node&node=4663312&i=21> wrote:
> >
> > Aonde estou errando nessa integral, o caminho não seria esse?
> >
> > Att.
> > André
> > <Integral.jpg>_______________________________________________
> > R-br mailing list
> > [hidden email] <http://user/SendEmail.jtp?type=node&node=4663312&i=22>
> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
>
> -------------- Próxima Parte ----------
> Um anexo em HTML foi limpo...
> URL: <
> http://listas.inf.ufpr.br/pipermail/r-br/attachments/20141019/f9144d27/attachment.html
> >
> -------------- Próxima Parte ----------
> Um anexo não-texto foi limpo...
> Nome: latexit-drag.pdf
> Tipo: application/pdf
> Tamanho: 59430 bytes
> Descrição: não disponível
> URL: <
> http://listas.inf.ufpr.br/pipermail/r-br/attachments/20141019/f9144d27/attachment.pdf
> >
> -------------- Próxima Parte ----------
> Um anexo em HTML foi limpo...
> URL: <
> http://listas.inf.ufpr.br/pipermail/r-br/attachments/20141019/f9144d27/attachment-0001.html
> >
>
> ------------------------------
>
> Subject: Legenda do Digest
>
> _______________________________________________
> R-br mailing list
> [hidden email] <http://user/SendEmail.jtp?type=node&node=4663312&i=23>
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>
>
> ------------------------------
>
> Fim da Digest R-br, volume 46, assunto 20
> *****************************************
>
>
> _______________________________________________
> R-br mailing list
> [hidden email] <http://user/SendEmail.jtp?type=node&node=4663312&i=24>
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>  ------------------------------
>
> *If you reply to this email, your message will be added to the discussion
> below:*
>
>
> http://r-br.2285057.n4.nabble.com/R-br-skater-e-deldir-tp4663303p4663312.html
>
> To unsubscribe from R-br, click here.
> NAML
> <http://r-br.2285057.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>
>
>
>
>
> --
> Hélio Gallo Rocha
> IFSULDEMINAS - Câmpus Muzambinho
>
>
> ------------------------------
>    <http://www.avast.com/>
>
> Este email está limpo de vírus e malwares porque a proteção do avast!
> Antivírus <http://www.avast.com/> está ativa.
>
>
> _______________________________________________
> R-br mailing list
> [hidden email] <http://user/SendEmail.jtp?type=node&node=4663338&i=1>
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
> ------------------------------
>  If you reply to this email, your message will be added to the discussion
> below:
>
> http://r-br.2285057.n4.nabble.com/R-br-skater-e-deldir-tp4663303p4663338.html
>  To unsubscribe from R-br, click here
> <http://r-br.2285057.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=3357982&code=aGVsaW9nYWxsb3JvY2hhQGdtYWlsLmNvbXwzMzU3OTgyfC0xMzQ3NTkwMDY4>
> .
> NAML
> <http://r-br.2285057.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>



-- 
Hélio Gallo Rocha
IFSULDEMINAS - Câmpus Muzambinho
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20141022/c7f503e7/attachment.html>


Mais detalhes sobre a lista de discussão R-br