2015-02-23 61 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

相关问题