r - 允许 map 上权重重的点压倒其他权重低的点的选项

标签 r maps gis raster kriging

什么是一些好的克里金法/插值想法/选项,可以让重度权重的点在绘制的 R map 上的轻权重点上流血?

康涅狄格州有八个县。我找到了质心并想绘制这八个县中每个县的贫困率。其中三个县人口稠密(约 100 万人),其他五个县人口稀少(约 100,000 人)。由于这三个人口稠密的县占全州总人口的 90% 以上,我希望这三个人口稠密的县完全“压倒” map 并影响跨县边界的其他点。
Krig R中的函数fields包有很多参数和协方差函数可以调用,但我不知道从哪里开始?

这是可重现的代码,可快速生成硬边界 map ,然后生成三个不同加权的 map 。希望我可以更改此代码,但也许它需要更复杂的东西,例如 geoRglm包裹?三个加权 map 中的两个看起来几乎相同,尽管一个的权重是另一个的 10 倍。

https://raw.githubusercontent.com/davidbrae/swmap/master/20141001%20how%20to%20modify%20the%20Krig%20function%20so%20a%20huge%20weight%20overwhelms%20nearby%20points.R

谢谢!!

hard-bordered connecticut map with county labels

example weighted map - fairfield, hartford, and new haven should overwhelm all other counties

编辑:这是我想要的行为的图片示例-

enter image description here

最佳答案

免责声明 - 我不是克里金法专家。克里格法很复杂,需要很好地理解基础数据、方法和目的,才能获得正确的结果。您可能希望尝试从@whuber [在 GIS Stack Exchange 上获得输入或通过他的网站(http://www.quantdec.com/quals/quals.htm)] 或您认识的其他专家)与他联系。

也就是说,如果您只是想实现您要求的视觉效果而不是将其用于某种统计分析,我认为有一些相对简单的解决方案。

编辑:

正如您所评论的,尽管以下建议使用 thetasmoothness论点使预测表面变得平坦,它们同样适用于所有测量值,因此不会扩展人口稠密县相对于人口密度较低县的“影响范围”。经过进一步考虑,我认为有两种方法可以实现这一点:通过改变协方差函数以取决于人口密度或使用权重,就像您一样。正如我在下面所写的,您的加权方法会改变克里金函数的误差项。也就是说,它反向缩放块金方差。

enter image description here

正如您在半变异函数图像中所见,金块本质上是 y 截距,或同一位置测量值之间的误差。权重影响金块方差 (sigma2) 作为 sigma2/weight。因此,更大的权重意味着在小尺度距离上的错误更少。但是,这不会改变半方差函数的形状,也不会对极差或基台产生太大影响。

我认为最好的解决方案是让协方差函数取决于人口。但是,我不确定如何实现这一点,而且我看不到任何对 Krig 的争论。这样做。我试着像在 Krig 中那样定义我自己的协方差函数。例如,但只有错误。

对不起,我帮不上忙了!

帮助理解克里金法的另一个重要资源是:http://www.epa.gov/airtrends/specialstudies/dsisurfaces.pdf

正如我在评论中所说,阈值值和块金值以及半变异函数的范围是您可以更改以影响平滑的因素。通过指定 weights在调用 Krig ,您正在改变测量误差的方差。也就是说,在正常使用中,预计权重与测量值的准确度成正比,因此更高的权重基本上代表更准确的测量值。这对于您的数据实际上并非如此,但它可能会给您带来您想要的效果。

要改变插入数据的方式,您可以在简单的 Krig 中调整两个(以及更多)参数。您正在使用的电话:thetasmoothness . 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)

给出:

enter image description here
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)

给出:

enter image description here

添加 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)

给出:

enter image description here

这应该给你一个开始和一些选项,但你应该查看 fields 的手册。 .它写得很好,很好地解释了论点。
此外,如果这是定量的,我强烈建议与具有重要空间统计知识的人交谈!

关于r - 允许 map 上权重重的点压倒其他权重低的点的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26143699/

相关文章:

第一个和第二个之间的正则表达式 "_"

r - 使用节点的 XY 坐标设置 (igraph) 图

android - 无法在 Google map 中缩放所需级别以适应屏幕中的 2 个方向

gis - 如何使用 geotrellis 修复 geotiff 中丢失的 SRS

java - 使用 GIS 获取单个点的地理信息

java - GeoServer 开发还是使用?如何与地理服务器集成?

r - 如何使用另一个矩阵的列(或行)计算矩阵的每一列(或行)的加权平均值?

R包开发: overriding a function from one package with a function from another?

ios - React Native Maps 红色轮廓 ios

javascript - 谷歌地图 : Finding polygon by Id