R:从光栅对象计算门槛、范围和熔核
我需要计算的门槛,范围和熔核从光栅层。我已经探索了gstat、usdm软件包,其中可以创建变异函数,但是我找不到一个给定光栅层的函数来估计这些参数。在大多数函数中,这些参数必须定义,例如Kriging 我有不同高度的光栅数据层,看起来像 我想从拟合到这些数据层的半变异函数参数中获取门槛、块金和范围,以创建类似于以下内容的图: 原始数据层作为多波段tiff提供。这是一张纸上的图,它进一步说明了这个概念R:从光栅对象计算门槛、范围和熔核,r,geospatial,r-raster,covariogram,R,Geospatial,R Raster,Covariogram,我需要计算的门槛,范围和熔核从光栅层。我已经探索了gstat、usdm软件包,其中可以创建变异函数,但是我找不到一个给定光栅层的函数来估计这些参数。在大多数函数中,这些参数必须定义,例如Kriging 我有不同高度的光栅数据层,看起来像 我想从拟合到这些数据层的半变异函数参数中获取门槛、块金和范围,以创建类似于以下内容的图: 原始数据层作为多波段tiff提供。这是一张纸上的图,它进一步说明了这个概念 这只是一个猜测。这就是我估计半方差的方法 其中n是其平均值小于总平均值的层数m是所有层的总平均值
这只是一个猜测。这就是我估计半方差的方法 其中
n
是其平均值小于总平均值的层数m
是所有层的总平均值r
是低于总平均值的每一层的平均值
s <- stack("old_gap_.tif")
m <- cellStats(mean(s), stat="mean", na.rm=T) # 0.5620522
r <- m[m < 0.5620522]
sem <- 1/53 * (0.5620522 - r)^2
plot(sem, r)
s使用gstat,下面是一个示例:
library(raster)
library(gstat)
demo(meuse, ask = FALSE, echo = FALSE)
set.seed(131) # make random numbers reproducible
# add some noise with .1 variance
meuse.grid$dist = meuse.grid$dist + rnorm(nrow(meuse.grid), sd=sqrt(.1))
r = raster(meuse.grid["dist"])
v = variogram(dist~1, as(r, "SpatialPixelsDataFrame"))
(f = fit.variogram(v, vgm("Sph")))
# model psill range
# 1 Nug 0.09035948 0.000
# 2 Sph 0.06709838 1216.737
f$psill[2] # sill
# [1] 0.06709838
f$range[2] # range
# [1] 1216.737
f$psill[1] # nugget
# [1] 0.09035948
为r
插入您自己的光栅,它应该可以工作。更改Sph
以适合另一个变异函数模型,尝试plot(v,f)
以验证绘图。请提供示例。Gstat适用于空间点。如果要使用栅格,可以将其作为空间栅格数据帧读取,也可以在光栅包中使用插值函数。光栅包提供了几个例子。我已经编辑了我的问题以添加更多细节。我不认为这是一个空间统计问题。我认为您应该估计跨层的半方差,并根据每个层的平均值绘制。但不确定这是否有帮助。当我绘制此图时,高度范围为0-1,曲线的形状与此处显示的相反;显示高度为0.5时的最小半方差。这些图像用于说明。数据有99层,每层的高度为0.5米。与高度与半方差图相比,实际数据与高度图将显示相反的趋势。我不知道对于我放在这里的数据,高度与半方差会是什么样子,但我猜它看起来与上面的图像类似。有可能看到你的绘图吗?谢谢Edzer,出于某种原因,我得到了这个错误:拟合错误。变异函数(v,vgm(“Sph”):模型应该是在线的类变异函数模型(使用vgm)(f=拟合。变异函数(v,vgm(“Sph”))可能会更新你的gstat包?您运行哪个版本?谢谢您的帮助,但是当使用问题中所附的多波段tiff示例中我自己的光栅层时,我遇到了另一个错误。>r=s[[81]]>r类别:光栅波段:81(共99个波段)尺寸:49,50,2450(nrow,ncol,ncell)分辨率:5,5(x,y)范围:36428436453443055374305782(xmin,xmax,ymin,ymax)坐标。参考:+proj=tmerc+lat_0=0+lon_0=-75+k=0.99959932289124+x_0=500000+y_0=0+ellps=WGS84+units=m+no_defs数据源:名称:旧的_gap_81值:0.008213255,1.000001(最小值,最大值)>r=as(r,“空间像素数据帧”)>v=model.frame中的变异函数(dist~1,r)错误。默认(术语(公式),as(数据,“数据帧”),na.action=na.fail):对象不是矩阵在示例中使用的示例数据中,请将dist
替换为old\u gap
<代码>名称(r)
将告诉您使用哪个名称。