0

R と PythonWin の両方を使用して、統計モデルを空間的に適用しました。両方のプログラムで同じ予測ラスターを作成しましたが、出力が異なります (クレイジーではありませんが、異なります)。2 つの予測ラスターの違いがスケーリングの問題に起因する可能性があるかどうか疑問に思っています (適用しているモデルの変数をスケーリングしたため、ラスターの値をスケーリングする必要がありました)。

23546 列 x 9157 行、30 x 30 セル サイズ、フローティング ピクセル タイプの大きなラスター ファイルがあります。R で scale{raster} を使用してラスターの値をスケーリングすると、出力の平均は 7.9e-17 で stdev 1 になります。

inputras<-raster(file)
outras1<-scale(inputras)
cellStats(outras1, mean)
# returns 7.874414e-17
cellStats(outras1, sd)
# returns 1

平均を減算し、標準偏差で割ることによって同じラスターの値をスケーリングすると、同じ出力が得られます。驚きはありません。

X<-cellStats(inputras, mean)
Y<-cellStats(inputras, sd)
outras2<-(inputras-X)/Y
cellStats(outras2, mean)
# returns 7.874414e-17
cellStats(outras2, sd)
#returns 1

同じラスターに対して arcpy.GetRasterProperties を使用して PythonWin でこれを行うと、別の出力が得られます。

inputras=arcpy.Raster(file)
X=float(arcpy.GetRasterProperties_management (inputras, "MEAN").getOutput(0))
Y=float(arcpy.GetRasterProperties_management (inputras, "STD").getOutput(0))
outras=(inputras-X)/Y
A=arcpy.GetRasterProperties_management (outras, "MEAN")
B=arcpy.GetRasterProperties_management (outras, "STD")
print A, B
#returns a mean of -6.8e-8 and a stdev of 0.999

最小値と最大値はすべての出力で同じであることを指摘しておく必要があります。

(私の知る限り)値をスケーリングする同じ方法を使用しているのに、R と PythonWin からの出力の平均が異なるのはなぜですか? この件についてご意見をお寄せいただきありがとうございます。

4

1 に答える 1

0

かどうか確認しましたか

X<-cellStats(inputras, mean)
Y<-cellStats(inputras, sd)

と同じものを返します

X=float(arcpy.GetRasterProperties_management (inputras, "MEAN").getOutput(0))
Y=float(arcpy.GetRasterProperties_management (inputras, "STD").getOutput(0))
于 2015-02-27T00:41:04.463 に答える