2016-02-04 10 views
0

Я пытаюсь использовать обычный кригинг для пространственного прогнозирования данных, где животное будет происходить на основе переменных-предикторов с использованием пакета gstat или automap в R. У меня много (более 100) дубликатов координатные точки, которые я не могу выбросить, поскольку эти станции были отобраны несколько раз в течение многих лет. Каждый раз, когда я запускаю код ниже для обычного кригинга, я получаю ошибку LDL, которая возникает из-за дублирования точек. Кто-нибудь знает, как решить эту проблему, не выкидывая данные? Я пробовал код из пакета automap, который должен исправлять дубликаты, но я не могу заставить это работать. Спасибо вам за помощь!Повторяющиеся данные при использовании пакета gstat или automap в R

coordinates(fish) <- ~ LONGITUDE+LATITUDE 
x.range <- range([email protected][,1]) 
y.range <- range([email protected][,2]) 
grd <- expand.grid(x=seq(from=x.range[1], to=x.range[2], by=3), y=seq(from=y.range[1], to=y.range[2], by=3)) 
coordinates(grd) <- ~ x+y 
plot(grd, pch=16, cex=.5) 
gridded(grd) <- TRUE 

library(gstat) 
zerodist(fish) ###146 duplicate points 
v <- variogram(log(WATER_TEMP) ~1, fish, na.rm=TRUE) 
plot(v) 
vgm() 
f <- vgm(1, "Sph", 300, 0.5) 
print(f) 
v.fit <- fit.variogram(v,f) 
plot(v, model=v.fit) ####In fit.variogram(v, d) : Warning: singular model in variogram fit 

krg <- krige(log(WATER_TEMP) ~ 1, fish, grd, v.fit) 
## [using ordinary kriging] 
##"chfactor.c", line 131: singular matrix in function LDLfactor()Error in predict.gstat(g, newdata = newdata, block = block, nsim = nsim,: LDLfactor 

##automap code for correcting for duplicates 
fish.dup = rbind(fish, fish[1,]) # Create duplicate 
coordinates(fish.dup) = ~LONGITUDE + LATITUDE 
kr = autoKrige(WATER_TEMP, fish.dup, grd) 
###Error in inherits(formula, "SpatialPointsDataFrame"):object 'WATER_TEMP' not found 
###somehow my predictor variables are no longer available when in a Spatial Points Data Frame?? 
+0

Пожалуйста, отредактируйте Q, чтобы включить «библиотечный» вызов (или ссылку), который делает доступным «рыба». –

+0

О, извините, я новичок в этом. Должен ли я предоставлять свои личные данные (например, рыбу)? Я не знал, можно ли посмотреть на код и посмотреть, где я ошибся. –

+0

Возможно, если вы найдете знающего пользователя этого пакета. Я не настолько, мне нужно иметь объект данных для работы. Вы можете получить ошибку с одним из объектов данных, предоставленных в gstat? (Первая ошибка также не похожа на полное сообщение об ошибке R.) –

ответ

0

automap имеет очень простое исправление для повторяющихся наблюдений, и что отказаться от них. Таким образом, automap на самом деле не решает проблему. Я вижу некоторые варианты:

  • Удалить дубликаты.
  • Слегка перепутайте координаты дубликатов, чтобы они не находились в точно таком же месте.
  • Выполните space-time kriging используя gstat.

В отношении вашей конкретной проблемы, пожалуйста, сделайте ваш пример воспроизводимым. Что я могу догадаться, что rbind вашего fish объекта не делать то, что вы ожидаете ...

+0

Спасибо за ваши предложения, Пол. Я принял ваш совет и смог запустить функцию autoKrige, мои двойные координаты слегка возмущены. Кризисные сетки прогнозирования выглядят очень неясными (т. Е. Очень пиксельными сетками), но это может быть функцией того, как я первоначально настраивал размеры сетки. Спасибо! –

1

automap::autoKrige ожидает формулу в качестве первого аргумента, попробуйте

kr = autoKrige(WATER_TEMP~1, fish.dup, grd) 
+0

Я, наконец, получил это, чтобы работать, хотя мне придется поиграть с размерами моей сетки. Благодаря! –