Cómo hacer hermosos mapas temáticos / de calor geográficos sin bordes con datos ponderados (levantamiento) en R, probablemente utilizando suavizado espacial en observaciones puntuales

Desde que Joshua Katz publicó estosdialecto mapas que puedes encontraren toda la web utilizandoencuesta de dialecto de harvard, He estado tratando de copiar y generalizar sus métodos ... pero gran parte de esto está sobre mi cabeza. Josh reveló algunos de sus métodosen este cartel, pero (que yo sepa) no ha revelado ninguno de sus códigos.

Mi objetivo es generalizar estos métodos para que sea fácil para los usuarios de cualquiera de los principales conjuntos de datos de encuestas del gobierno de los Estados Unidos colocar sus datos ponderados en una función y obtener un mapa geográfico razonable. La geografía varía: algunos conjuntos de datos de encuestas tienen ZCTA, algunos tienen condados, algunos tienen estados, algunos tienen áreas metropolitanas, etc. Probablemente sea inteligente comenzar trazando cada punto en el centroide - se discuten los centroidesaquí y disponible para la mayoría de todas las geografías enlos archivos del diccionario geográfico de 2010 de la oficina del censo. Entonces, para cada punto de datos de la encuesta, tiene un punto en un mapa. ¡pero algunas respuestas de la encuesta tienen un peso de 10, otras tienen un peso de 100,000! obviamente, cualquier "calor" o suavizado o coloración que finalmente termine en el mapa debe tener en cuenta los diferentes pesos.

Soy bueno con los datos de la encuesta, pero no sé nada sobre el suavizado espacial o la estimación del núcleo. el método que usa josh en su póster esk-nearest neighbor kernel smoothing with gaussian kernel lo cual es extraño para mí Soy un novato en el mapeo, pero generalmente puedo hacer que las cosas funcionen si sé cuál debería ser el objetivo.

Nota: esta pregunta es muy similar aHace una pregunta hecha hace diez meses que ya no contiene datos disponibles. También hay tid-bits de informaciónen este hilo, pero si alguien tiene una manera inteligente de responder mi pregunta exacta, obviamente preferiría ver eso.

El paquete de encuestas r tiene unsvyplot y si ejecuta estas líneas de código, puede ver datos ponderados en coordenadas cartesianas. pero realmente, para lo que me gustaría hacer, el trazado debe superponerse en un mapa.

library(survey)
data(api)
dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc)
svyplot(api00~api99, design=dstrat, style="bubble")

En caso de que sea de alguna utilidad, publiqué un código de ejemplo que brindará a cualquiera que esté dispuesto a ayudarme una forma rápida de comenzar con algunos datos de encuestas en áreas estadísticas basadas en núcleos (otro tipo de geografía).

Cualquier idea, consejo, orientación sería apreciada (y acreditada si puedo obtener un tutorial / guía / procedimientos formales parahttp://asdfree.com/)

¡¡¡¡¡¡¡¡¡¡Gracias!!!!!!!!!!

# load a few mapping libraries
library(rgdal)
library(maptools)
library(PBSmapping)


# specify some population data to download
mydata <- "http://www.census.gov/popest/data/metro/totals/2012/tables/CBSA-EST2012-01.csv"

# load mydata
x <- read.csv( mydata , skip = 9 , h = F )

# keep only the GEOID and the 2010 population estimate
x <- x[ , c( 'V1' , 'V6' ) ]

# name the GEOID column to match the CBSA shapefile
# and name the weight column the weight column!
names( x ) <- c( 'GEOID10' , "weight" )

# throw out the bottom few rows
x <- x[ 1:950 , ]

# convert the weight column to numeric
x$weight <- as.numeric( gsub( ',' , '' , as.character( x$weight ) ) )

# now just make some fake trinary data
x$trinary <- c( rep( 0:2 , 316 ) , 0:1 )

# simple tabulation
table( x$trinary )

# so now the `x` data file looks like this:
head( x )

# and say we just wanted to map
# something easy like
# 0=red, 1=green, 2=blue,
# weighted simply by the population of the cbsa

# # # end of data read-in # # #


# # # shapefile read-in? # # #

# specify the tiger file to download
tiger <- "ftp://ftp2.census.gov/geo/tiger/TIGER2010/CBSA/2010/tl_2010_us_cbsa10.zip"

# create a temporary file and a temporary directory
tf <- tempfile() ; td <- tempdir()

# download the tiger file to the local disk
download.file( tiger , tf , mode = 'wb' )

# unzip the tiger file into the temporary directory
z <- unzip( tf , exdir = td )

# isolate the file that ends with ".shp"
shapefile <- z[ grep( 'shp , z ) ]

# read the shapefile into working memory
cbsa.map <- readShapeSpatial( shapefile )

# remove CBSAs ending with alaska, hawaii, and puerto rico
cbsa.map <- cbsa.map[ !grepl( "AK$|HI$|PR$" , cbsa.map$NAME10 ) , ]

# cbsa.map$NAME10 now has a length of 933
length( cbsa.map$NAME10 )

# convert the cbsa.map shapefile into polygons..
cbsa.ps <- SpatialPolygons2PolySet( cbsa.map )

# but for some reason, cbsa.ps has 966 shapes??
nrow( unique( cbsa.ps[ , 1:2 ] ) )
# that seems wrong, but i'm not sure how to fix it?

# calculate the centroids of each CBSA
cbsa.centroids <- calcCentroid(cbsa.ps)
# (ignoring the fact that i'm doing something else wrong..because there's 966 shapes for 933 CBSAs?)

# # # # # # as far as i can get w/ mapping # # # #


# so now you've got
# the weighted data file `x` with the `GEOID10` field
# the shapefile with the matching `GEOID10` field
# the centroids of each location on the map


# can this be mapped nicely?

Respuestas a la pregunta(2)

Su respuesta a la pregunta