
Ola pessoal ! Estou com um pequeno problema e gostaria da opinião do pessoal da lista como resolver de uma forma eficiente. Tenho uma área que foi dividida em quadrados 1 km X 1 km e o numero de acidentes foi contado em cada um desses quadrados. Agora eu quero saber o numero de acidentes em cada vizinho de primeiro ordem e colocar cada numero em uma coluna diferente criando uma serie de covariáveis a idéia e montar um modelo autoregressivo. Eu nao quero apenas vizinhos de primeira ordem, mas até 20 th ordem. Alguma idéia ? Por onde comecar ? Obrigado -- Wagner Hugo Bonat LEG - Laboratório de Estatística e Geoinformação UFPR - Universidade Federal do Paraná

Eu acredito que deva ter um comando que faça isso porque é uma espécie de média móvel cuja janela é a vizinhança. Aqui vai minha sugestão. ## Matriz que representa uma vizinhança em forma de grid. O valor na ## cédula é o número de eventos no setor. x <- matrix(rpois(25, l=10), 5, 5) ## Vizinhança de nível. As coordenadas dos vizinhos do setor [2,2]. viz <- 1 i <- 2; j <- 2 outer((i-viz):(i+viz), (j-viz):(j+viz), paste) ## Matriz acrescida de borda com NA para evitar problema ao passar pelos ## setores de borda. xB <- cbind(NA, rbind(NA, x, NA), NA) ## Aplicando a soma. sum(xB[-viz:viz+i, -viz:viz+j], na.rm=TRUE) ## Aplicando à todos os índices. S <- x for(i in 1:nrow(x)){ for(j in 1:ncol(x)){ S[i,j] <- sum(xB[-viz:viz+i, -viz:viz+j], na.rm=TRUE) } } ## Resultado. S À disposição. Walmes.

Devia ter buscando no google antes de sair escrevendo código. Procurei com "moving average in a matrix with R". Esses links mostram implementações. http://ugrad.stat.ubc.ca/R/library/OLIN/html/ma.matrix.html http://stackoverflow.com/questions/743812/calculating-moving-average-in-r https://stat.ethz.ch/pipermail/r-sig-geo/2008-June/003784.html À disposição. Walmes.

eu comecaria por representar o objeto como um spatialpixeldataframe do sp e ver se o funcao que monta a matrix de vizinhanca tem as ocoes desejadas se tiver fica moleza pq é so multiplicar a patriz pelo vetor de dados On Wed, 9 Jul 2014, Wagner Bonat wrote:
Ola pessoal !
Estou com um pequeno problema e gostaria da opinião do pessoal da lista como resolver de uma forma eficiente.
Tenho uma área que foi dividida em quadrados 1 km X 1 km e o numero de acidentes foi contado em cada um desses quadrados. Agora eu quero saber o numero de acidentes em cada vizinho de primeiro ordem e colocar cada numero em uma coluna diferente criando uma serie de covariáveis a idéia e montar um modelo autoregressivo. Eu nao quero apenas vizinhos de primeira ordem, mas até 20 th ordem. Alguma idéia ? Por onde comecar ?
Obrigado
-- Wagner Hugo Bonat LEG - Laboratório de Estatística e Geoinformação UFPR - Universidade Federal do Paraná
participantes (3)
-
Paulo Justiniano
-
Wagner Bonat
-
walmes .