草庐IT

【附证明】用ArcGIS中Band Collection Statistics做相关性分析可能存在错误

Q一件事 2023-08-16 原文

ArcGIS相关性分析

Spatial Analyst Tools——Multivariate(多元分析)——Band Collection Statistics(波段集统计)。

添加图层,勾选Compute covariance and correlation matrices以输出相关第分析结果,结果保存成txt。

使用的是皮尔逊相关系数(Pearson Correlation Coefficient)。

Spatial Analyst Tools——Multivariate——Band Collection Statistics
添加图层,勾选Compute covariance and correlation matrices以输出相关第分析结果,结果保存成txt。
使用的是皮尔逊相关系数(Pearson Correlation Coefficient)

数据的解释

arcgis10.8的结果

arcgis pro的结果

从这里可以知道无论是ArcGIS还是pro都是一样的。


创建渔网,进行分析。

这里的渔网,随便找一个矢量确定其位置就好。

新建一个字段。

随机生成1-50的值

import random
def rannumb():
   res=random.randint(0,50)
   return res

转成栅格

用字段计算器生成两个栅格。但是这样生成的两个栅格有相同值,在属性表中的体现为:一个值的count并非为1.

这样也因此没有49个数,为了后期方便验证,我还是把每个值设定为不同的值。

代码什么意思自己感悟,不懂的话可以在下面留言。

import random
data = random.sample(range(0, 100), 100)
rec=0
def Increment():
 global rec
 global data
 Start = 1 #初始值
 Interval = 1 #间隔值
 if (rec == 0):
  rec = Start
 else:
  rec = rec + Interval
 data_rec=data[rec]
 return data_rec

直接计算。

在属性表中统计的和用Band Collection Statistic计算的比较,最大最小值和平均值是一样的,但是标准差是不一样的。

再用excel验证一下。即在excel中计算一下标准差。这两个是不同的标准差。

再看一下协方差,这里的协方差是计算两个相同的数的。乍一看好像和上面Band Collection Statistic计算的没有什么关系。看来还是要看两个,不同变量的协方差来看关系。

之前我忘记弄记录两个栅格的位置对应关系了。所以我根据上面的方法新建两个图层。

位置对应关系。

新建的long3和long4的关系。

于是导出两个表格计算协方差。好像也是不对的,这里说的协方差那么我们就不能确定了。

再算算相关性吧,无容置疑,-1.01315的相关性本身就超出了相关性的值域。这是在excel里面算出的相关性。这个更有可能。

总结:ArcGIS来算相关性是不合适的。

参考文献

论ArcGIS10.2的Band Collection Statistics工具计算相关系数的正确性

支撑数据
数据下载

有关【附证明】用ArcGIS中Band Collection Statistics做相关性分析可能存在错误的更多相关文章

  1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  2. ruby - 如何以所有可能的方式将字符串拆分为长度最多为 3 的连续子字符串? - 2

    我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123

  3. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

    我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

  4. ruby-on-rails - 相关表上的范围为 "WHERE ... LIKE" - 2

    我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que

  5. ruby-on-rails - 如何在 Rails View 上显示错误消息? - 2

    我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c

  6. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

    我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

  7. ruby-on-rails - 错误 : Error installing pg: ERROR: Failed to build gem native extension - 2

    我克隆了一个rails仓库,我现在正尝试捆绑安装背景:OSXElCapitanruby2.2.3p173(2015-08-18修订版51636)[x86_64-darwin15]rails-v在您的Gemfile中列出的或native可用的任何gem源中找不到gem'pg(>=0)ruby​​'。运行bundleinstall以安装缺少的gem。bundleinstallFetchinggemmetadatafromhttps://rubygems.org/............Fetchingversionmetadatafromhttps://rubygems.org/...Fe

  8. ruby - #之间? Cooper 的 *Beginning Ruby* 中的错误或异常 - 2

    在Cooper的书BeginningRuby中,第166页有一个我无法重现的示例。classSongincludeComparableattr_accessor:lengthdef(other)@lengthother.lengthenddefinitialize(song_name,length)@song_name=song_name@length=lengthendenda=Song.new('Rockaroundtheclock',143)b=Song.new('BohemianRhapsody',544)c=Song.new('MinuteWaltz',60)a.betwee

  9. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

  10. ruby-on-rails - Rails 5 Active Record 记录无效错误 - 2

    我有两个Rails模型,即Invoice和Invoice_details。一个Invoice_details属于Invoice,一个Invoice有多个Invoice_details。我无法使用accepts_nested_attributes_forinInvoice通过Invoice模型保存Invoice_details。我收到以下错误:(0.2ms)BEGIN(0.2ms)ROLLBACKCompleted422UnprocessableEntityin25ms(ActiveRecord:4.0ms)ActiveRecord::RecordInvalid(Validationfa

随机推荐