【问题标题】:R angular distance weighting interpolation functionR角距离加权插值函数
【发布时间】:2020-07-17 21:55:35
【问题描述】:

我想使用 R 进行 Angular-Distance-Weighting Interpolation 描述,例如here(第 3 页)。

这是一种插值,它 (1) 通过相对于相关衰减距离的距离对数据点进行加权,以及 (2) 对孤立的数据点给予更大的权重。

我的问题是在 R 中是否有一些包实现,或者是否需要从头开始。我的谷歌搜索并没有让我得到任何明显的信息,但我不太了解 R 的插值包。因此,如果有人曾经这样做过,请告诉我。

【问题讨论】:

    标签: r interpolation distance spatial


    【解决方案1】:

    没有可用的 R 包。我编写了一个简单的角距离加权 (ADW) 函数,在 Shepard 1968 中实现

    [X,Y] 是您希望估计的坐标。 [Xtrain,Ytrain] 是数据点的坐标。权重径向是距离权重。

    compute_weight_by_theta = function(X,Y,xtrain,ytrain,weights.radial){
          N = length(xtrain)
          weight.directional = integer(N)
          for (i in 1:N){
            numerator = 0;
            denominator = 0;
            for (j in 1:N){
              xi = xtrain[i]; yi = ytrain[i]
              xj = xtrain[j]; yj = ytrain[j]
              if ((xi != xj) | (yi != yj)){
                Sj = weights.radial[j]
                Di = sqrt((X - xi)**2 + (Y - yi)**2)
                Dj = sqrt((X - xj)**2 + (Y - yj)**2)
                cos_theta = ((X-xi)*(X-xj) + (Y-yi)*(Y-yj)) / (Di*Dj)
                numerator = numerator + (1-cos_theta)*Sj
                denominator = denominator + Sj
              }
            }
            weight.directional[i] = numerator/denominator
          }
          return(weight.directional)
        }
    

    【讨论】:

    • 谢谢!同时,我使用了一种更简单的方法。下次我试试你的功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 2021-12-18
    • 2018-11-04
    • 2017-01-07
    • 1970-01-01
    • 2016-10-21
    • 2017-01-30
    相关资源
    最近更新 更多