7 votos

¿Cuáles son los más eficientes paquetes de regresión ponderada geográfica?

¿Cuáles son los más memoria eficiente de los paquetes de código abierto para el cálculo de una regresión ponderada geográficamente (GWR)?

Yo estoy en una situación en la que necesito para hacer una regresión ponderada geográficamente en un conjunto de puntos en los que los datos de entrenamiento se compone de alrededor de 40.000 observaciones y cada observación tiene cerca de 20.000 variables.

He implementado una versión de GWR a mí mismo usando una combinación de Python Numpy/SciPy y PostGIS. Voy a resolver la regresión utilizando un enfoque de álgebra de matrices, pero esta falla debido a problemas de memoria cuando tengo densos, ricos de la característica de los sistemas con muchas de las observaciones.

Una forma de sortear el problema de la memoria es el uso de un enfoque iterativo para encontrar una línea de mejor ajuste, tales como un incremento en el gradiente de la pendiente. Estoy pensando que debería funcionar algo como (http://www.eecs.wsu.edu/~cook/dm/lectures/l5/node14.html). Incremental de Gradiente de la pendiente se describe bastante bien aquí, en las páginas 4 a 7 (http://cs229.stanford.edu/notes/cs229-notes1.pdf).

Obviamente, yo podría implementar esto de mí, pero tenía la esperanza de que tal vez alguien más ya había codificado algo similar.

2voto

De GWR por Roger Bivand:

Geográficamente regresión ponderada (GWR) es una técnica exploratoria pensado principalmente para indicar cuando la no-estacionariedad está teniendo lugar en el mapa, que es donde localmente ponderada de los coeficientes de regresión de mover lejos de sus valores globales. Su base es la preocupación de que la equipado valores del coeficiente de un modelo global, cocina equipada con todos los datos, no podrá representar detallado de las variaciones locales en los datos adecuadamente en esto se sigue otro local de regresión de las implementaciones. Difiere, sin embargo, no buscando la variación local en 'datos' de espacio, pero por movimiento de un promedio ponderado de ventana a través de los datos, la estimación de un conjunto de valores del coeficiente a cada elegido 'ajuste' punto. Los puntos de ajuste son muy a menudo los puntos en los que se realizarán las observaciones, pero no tienen a ser. Si el local coeficientes varían en el espacio, puede ser tomado como un indicación de la no-estacionariedad.

La técnica ... implica en primer lugar la selección de un ancho de banda de un isotrópica de ponderaciones espaciales kernel, normalmente un núcleo Gaussiano con un ancho de banda fijo optado por dejar fuera de validación cruzada. La elección de el ancho de banda puede ser muy exigentes, como n regresiones deben estar equipados en cada paso. Técnicas alternativas están disponibles, por ejemplo para adaptación anchos de banda, pero a menudo puede ser incluso más cálculo intensivo.

> library(maptools)
> library(spdep)
> owd <- getwd()
> setwd(system.file("etc/shapes", package = "spdep"))
> NY8 <- readShapeSpatial("NY8_utm18")
> setwd(owd)
> library(spgwr)
> bwG <- gwr.sel(Z ~ PEXPOSURE + PCTAGE65P + PCTOWNHOME, data = NY8, gweight = gwr.Gauss,
+ verbose = FALSE)
> gwrG <- gwr(Z ~ PEXPOSURE + PCTAGE65P + PCTOWNHOME, data = NY8, bandwidth = bwG,
+ gweight = gwr.Gauss, hatmatrix = TRUE)
> gwrG

Una vez que el ancho de banda se ha encontrado, o elegida por un lado, el gwrfunción puede ser utilizado para ajustar el modelo con el elegido local del núcleo y el ancho de banda. Si el argumento de datos, se pasa un SpatialPolygonsDataFrame o SpatialPointsDataFrame objeto, el objeto de salida contendrá un componente, que es un objeto de la misma geometría que se rellena con el local de los coeficientes estimados. Si la entrada de objetos polígono de apoyo, los centroides de las entidades espaciales se toman como base para su análisis. La función también tiene un fit.points argumento, que permite local coeficientes de ser creado por geográficamente ponderada de regresión para otro tipo de apoyo de los puntos de datos.

1voto

seifer_08ms Puntos 51

Si desea calcular GWR en R, usted debe tratar de GWmodel. Si usted tiene que hacerlo en Python, también puede utilizar pygwr.

GWmodel contiene muchos geográficamente ponderada (GW) modelos, incluyendo gwr (GW de regresión), gwpca(GW análisis de componentes principales), gwda(GW Análisis Discriminante), gwr.generalizadas Generalizadas GWR modelos, incluyendo los de Poisson y Binomial), gwr.mixto(mezcla de regresión ponderada geográficamente), gwr.lcr ( GWR con un local con compensación de ridge plazo) y etc. También hay alguna versión robusta para diferentes GW modelos en el paquete. Aquí están algunos ejemplos básicos de GWR :

if (!require(GWmodel)) install.packages("GWmodel")
require(GWmodel)
data(LondonHP)
DM<-gw.dist(dp.locat=coordinates(londonhp))
## specify an optimum bandwidth by cross-validation appraoch
bw1<-bw.gwr(PURCHASE~FLOORSZ, data=londonhp, kernel = "gaussian",dMat=DM)
gwr.res1<-gwr.basic(PURCHASE~FLOORSZ, data=londonhp, bw=bw1,
kernel = "gaussian",dMat=DM, F123.test=T)

Pygwr apoyo de Gauss y de Poisson GWR. Usted puede ver el ejemplo de código desde github y tenedor.

0voto

Kaleberg Puntos 1

análisis espacial en Macroecología podría ser una buena solución. http://www.ecoevol.ufg.br/Sam/

-1voto

Jeff Mc Puntos 1741

Trato de GeoDA (http://geodacenter.asu.edu/), ya que es un programa independiente de un propósito.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X