отказ от ответственности. Я не являюсь экспертом по Кригингу. Кригинг сложен и требует хорошего понимания исходных данных, метода и цели для достижения правильного результата. Вы можете попытаться получить информацию от @whuber [на GIS Stack Exchange или связаться с ним через его веб-сайт (http://www.quantdec.com/quals/quals.htm)] или другому известному вам эксперту.
Тем не менее, если вы просто хотите добиться желаемого визуального эффекта и не используете это для какого-то статистического анализа, я думаю, что есть несколько относительно простых решений.
ИЗМЕНИТЬ:
Как вы заметили, хотя приведенные ниже предложения по использованию аргументов theta
и smoothness
выравнивают поверхность прогнозирования, они в равной степени применяются ко всем измерениям и, таким образом, не расширяют «сферу влияния» более густонаселенных округов по сравнению с менее густонаселенными. После дальнейшего рассмотрения я думаю, что есть два способа добиться этого: изменив функцию ковариации так, чтобы она зависела от плотности населения, или используя веса, как у вас. Ваш подход к взвешиванию, как я писал ниже, изменяет погрешность функции криггинга. То есть он обратно пропорционален дисперсии самородка.
![введите здесь описание изображения](https://i.stack.imgur.com/chUzr.gif)
Как вы можете видеть на изображении вариограммы, самородок, по сути, представляет собой точку пересечения оси Y или ошибку между измерениями в одном и том же месте. Веса влияют на дисперсию самородков (сигма2) как сигма2/вес. Таким образом, большие веса означают меньшую ошибку на малых расстояниях. Однако это не меняет форму функции полудисперсии и не оказывает большого влияния на диапазон или порог.
Я думаю, что лучшим решением было бы, чтобы ваша ковариационная функция зависела от населения. однако я не уверен, как это сделать, и я не вижу никаких аргументов в пользу Krig
для этого. Я попытался поиграть с определением собственной функции ковариации, как в примере Krig
, но получил только ошибки.
Извините, я не мог больше помочь!
Еще один полезный ресурс для понимания криггинга: http://www.epa.gov/airtrends/specialstudies/dsisurfaces.pdf
Как я сказал в своем комментарии, значения порога и самородка, а также диапазон вариограммы — это то, что вы можете изменить, чтобы повлиять на сглаживание. Указав weights
в вызове Krig
, вы изменяете дисперсию ошибок измерения. То есть при обычном использовании ожидается, что веса будут пропорциональны точности значения измерения, так что более высокие веса представляют собой, по существу, более точные измерения. На самом деле это не так с вашими данными, но это может дать вам желаемый эффект.
Чтобы изменить способ интерполяции ваших данных, вы можете настроить два (и многие другие) параметра в простом вызове Krig
, который вы используете: theta
и smoothness
. theta
регулирует диапазон полудисперсии, а это означает, что измеренные точки, расположенные дальше, вносят больший вклад в оценки по мере увеличения theta
. Ваш диапазон данных
range <- data.frame(lon=range(ct.data$lon),lat=range(ct.data$lat))
range[2,]-range[1,]
lon lat
2 1.383717 0.6300484
таким образом, ваши точки измерения различаются на ~ 1,4 градуса долготы и ~ 0,6 градуса широты. Таким образом, вы можете поиграть с указанием значения theta
в этом диапазоне, чтобы увидеть, как это повлияет на ваш результат. В общем, большее theta
приводит к большему сглаживанию, поскольку вы используете больше значений для каждого прогноза.
Krig.output.wt <- Krig( cbind(ct.data$lon,ct.data$lat) , ct.data$county.poverty.rate ,
weights=c( size , 1 , 1 , 1 , 1 , size , size , 1 ),Covariance="Matern", theta=.8)
r <- interpolate(ras, Krig.output.wt)
r <- mask(r, ct.map)
plot(r, col=colRamp(100) ,axes=FALSE,legend=FALSE)
title(main="Theta = 0.8", outer = FALSE)
points(cbind(ct.data$lon,ct.data$lat))
text(ct.data$lon, ct.data$lat-0.05, ct.data$NAME, cex=0.5)
Дает:
![введите здесь описание изображения](https://i.stack.imgur.com/R3DZq.png)
Krig.output.wt <- Krig( cbind(ct.data$lon,ct.data$lat) , ct.data$county.poverty.rate ,
weights=c( size , 1 , 1 , 1 , 1 , size , size , 1 ),Covariance="Matern", theta=1.6)
r <- interpolate(ras, Krig.output.wt)
r <- mask(r, ct.map)
plot(r, col=colRamp(100) ,axes=FALSE,legend=FALSE)
title(main="Theta = 1.6", outer = FALSE)
points(cbind(ct.data$lon,ct.data$lat))
text(ct.data$lon, ct.data$lat-0.05, ct.data$NAME, cex=0.5)
Дает:
![введите здесь описание изображения](https://i.stack.imgur.com/9Dw17.png)
Добавление аргумента smoothness
изменит порядок функции, используемой для сглаживания ваших прогнозов. Значение по умолчанию равно 0,5, что приводит к полиному второго порядка.
Krig.output.wt <- Krig( cbind(ct.data$lon,ct.data$lat) , ct.data$county.poverty.rate ,
weights=c( size , 1 , 1 , 1 , 1 , size , size , 1 ),
Covariance="Matern", smoothness = 0.6)
r <- interpolate(ras, Krig.output.wt)
r <- mask(r, ct.map)
plot(r, col=colRamp(100) ,axes=FALSE,legend=FALSE)
title(main="Theta unspecified; Smoothness = 0.6", outer = FALSE)
points(cbind(ct.data$lon,ct.data$lat))
text(ct.data$lon, ct.data$lat-0.05, ct.data$NAME, cex=0.5)
Дает:
![введите здесь описание изображения](https://i.stack.imgur.com/mfnTo.png)
Это должно дать вам начало и некоторые варианты, но вы должны посмотреть руководство для fields
. Он довольно хорошо написан и хорошо объясняет аргументы. Кроме того, если это каким-то образом количественные данные, я настоятельно рекомендую поговорить с кем-то, кто хорошо разбирается в пространственной статистике!
person
Cotton.Rockwood
schedule
04.10.2014