8 votos

Usando kriging con datos muy escasos

Tengo una muy escasa conjunto de mediciones de una cantidad, alrededor de 10 mediciones en diferentes lugares a través de un continente. La distribución de los lugares es muy irregular. Me gustaría suave en valores en un espaciados regularmente red en el continente.

De hecho tenemos una mucho más denso conjunto de observaciones de una magnitud relacionada y se están desarrollando técnicas para crear un mapa de la primera cantidad, utilizando dos conjuntos de mediciones. La intención es la de estimar la exactitud de este enfoque híbrido utilizando dejar uno fuera de la validación cruzada (pruebas de cada uno de los 10 sitios en vez de haber creado el mapa con todos los demás, además de las mediciones adicionales). Como referencia, primero hay que ver el grado de precisión de un mapa, utilizando LOOCV, creado a partir de la original de red de 10 estaciones. También debo señalar que esta cantidad varía a lo largo de la escala de tiempo de minutos y queremos producir un mapa en tiempo casi real.

Yo no soy un experto en técnicas geoespaciales, sin embargo he de comprender los conceptos básicos de Kriging y tras la comprobación de la vista de tareas de CRAN, parece autoKrige en el automap paquete sería una función adecuada a emplear. Los resultados que estoy obteniendo son nada parecido a lo que yo esperaba por lo que cualquier ayuda se agradece.

Aquí está un ejemplo de un conjunto de entrada de datos de entrenamiento (todos los datos disponibles para un determinado tiempo):

   lat   lon      value
  -27.53 152.92   98
  -35.32 149.00   79
  -34.05 150.67   81
  -12.45 130.95   92
  -42.92 147.32   73
  -22.25 114.08   91
  -29.03 167.97  108
  -31.94 115.95   89

Como se puede ver, la cantidad fijada como objetivo tiene un rango de valores más ampliamente espaciados área.

Puedo convertir de una estructura de datos que contiene lat, lon y el valor en un spatialPointsDataFrame haciendo

coordinates(xtrain) = ~lon + lat
coordinates(xtest) = ~lon + lat
proj4string(xtrain) <-CRS("")
proj4string(xtest) <-CRS("")

donde xtest contiene la cuadrícula de puntos que quiero que muestra el mapa. Entonces me Krige esta usando

result <- autoKrige(value~1,xtrain,xtest) 

Yo graficar los resultados

plot(result)

y obtener la siguiente imagen

Kriging result

Como se puede ver, el resultado es esencialmente el valor de la media en todos los puntos. Mi entendimiento es que autoKrige debería haber determinado los mejores valores de la Kriging parámetros y produjeron algo más realista que esto. Sólo para ilustrar, el rango de los valores previstos en la cuadrícula es de 0,22, lo que es claramente mucho menos que el 30 punto de dispersión visto en los valores de entrada.

Así, a dónde voy mal? Estoy utilizando mal el paquete de R, o es mi problema más fundamental en la manera en que yo estoy tratando de emplear el Kriging?

7voto

samiq Puntos 1128

De diez puntos que van a tener 45 (10*(10-1)/2) puntos del variograma en la nube a partir de las distancias entre cada par de puntos. Una vez que el sistema ha desechado, o incluso sin agrupamiento, que va a ser dominado por el ruido, creo. Obtener una parcela del variograma en la nube para ver a qué me refiero.

Si autokrige no cabe una suave variograma, a continuación, va a hacer lo que hizo, y sólo tiene que ir 'diablos, no puedo trabajar fuera de la correlación con la distancia con sólo 10 puntos, mi mejor conjetura es sólo la media'. Realmente no se puede hacer mejor.

Si quieres algo para mirar 'realista', entonces usted podría alimentar el variograma de los parámetros de mayor rango, que sería más suave de la salida. Pero entonces usted puede ser que también acaba de hacer distancia inversa ponderación si lo que quieres es una imagen bonita. La ventaja de kriging es que es realista. Pero rechaza su realidad y lo reemplaza con su propio...

Sugerencias:

  • Obtener una parcela del variograma en la nube
  • Obtener datos más :)
  • Buscar en bivariante de kriging para su caso, con los dos conjuntos de datos diferentes. Creo que la teoría de que existe, incluso puede ser código para...

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