Оценка плотности ядра в R с весовыми и граничными поправками? - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь создать растр плотности ядра в R, используя взвешенные точечные данные, полученные из растра с дробными значениями ячеек (растр представляет собой долю пикселя, которая покрыта сельскохозяйственной, а не лесной землей, которую я затем преобразован в набор точечных данных для использования в качестве входных данных ядра).

Мне бы также хотелось, чтобы к этим данным применялись корректировки границ с использованием многоугольного шейп-файла муниципалитета, из которого взят мой набор данных.

В настоящее время я использую функцию spkernel2d из пакета "splancs" , который вычисляет оценки ядра с поправкой на границу, но не принимает веса в качестве входных данных, что означает, что каждая точка, независимо от ее стоимости (представитель% сельскохозяйственной площади), обрабатывается одинаково.

Существуют ли какие-либо пакеты ядра, которые могут принимать весовые коэффициенты в качестве входных данных И делать непрямоугольные корректировки границ? Я пробовал функцию kde.boundary из пакета "ks", но она кажется подходящей для прямоугольных границ.

Мой текущий код с использованием функции spkernel2d (без взвешивания) выглядит следующим образом:

test_agro_pts_300 <- rasterToPoints(rast_agro_300m, fun=NULL, spatial=TRUE) #Converting my input raster to points data

poly <- slot(testmuni, "polygons")[[1]]
poly1 <- slot(poly, "Polygons")[[1]]
coords <- slot(poly1, "coords") #Extracting boundary coordinates from municipality shapefile (polygon)

grd1 <- GridTopology(bbox(rast_agro_300m)[,1] + res(rast_agro_300m)/2, res(rast_agro_300m), dim(rast_agro_300m)[2:1]) #Creating blank output grid for kernel results

b <- coordinates(test_agro_pts_300)
colnames(b)<-c("x","y") #Extracting point coordinates

#Kernels
Sys.time()
k_1500m <- spkernel2d(b, coords, h0=1500, grd1) #Estimating Kernels with 1.5km bandwidth - this function uses quantic kernel function
Sys.time()
df <- data.frame(k_1500m =k_1500m)
kernel1500 <- SpatialGridDataFrame(grd1, data=df)
kernel1500n <- raster(kernel1500) #Converting gridded output kernel estimates to raster
crs(kernel1500n) <- CRS_RC #adding back CRS projection
Sys.time()

plot(kernel1500n) #Visualizing results
...