シェパードに実装さavailable..Iが角距離加重(ADW)のための簡単な関数を書いた何Rパッケージはありません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)
}
ありがとうございます!私はより簡単なアプローチを使用しました。次回は、あなたの機能を試してみます。 – intasys