2015-02-23 56 views
0

我已經使用R和PythonWin來在空間上應用統計模型。我在兩個程序中創建了相同的預測柵格,輸出結果不同(不是瘋狂的不同但不同)。我想知道兩個預測柵格之間的差異是否可能是由於縮放問題(我不得不縮放我的柵格中的值,因爲我縮放了我正在應用的模型中的變量)?爲什麼R scale {raster}函數給出的輸出與在PythonWin中縮放相同的柵格不同?

我有23546列x 9157行,30 x 30像元大小和浮動像素類型的大型光柵文件。如果我縮放中的R的光柵的使用比例{光柵}中的值時,輸出具有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的輸出有何不同?預先感謝您對此事可能有的任何想法。

+0

這些小差異可能是由於不同的浮點數據類型或兩種語言之間的東西。 – BrenBarn 2015-02-23 20:43:10

回答

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)) 
+0

感謝您花時間考慮我的問題。這是一個很好的想法。我確實檢查了R和PythonWin的inputras統計是否相同......並且它們都是相同的;平均值= 1473.1,標準偏差= 876.8。 – 2015-03-03 17:44:36

相關問題