正确设置R中的Shannon熵计算

时间:2015-09-11 19:17:43

标签: r complex-numbers entropy

我试图在Force Platform数据上运行一些entropy()计算,我收到一条警告信息:

> library(entropy)
> d2 <- read.csv("c:/users/SLA9DI/Documents/data2.csv")
> entropy(d2$CoPy, method="MM")
[1] 10.98084
> entropy(d2$CoPx, method="MM")
[1] 391.2395
Warning message:
In log(freqs) : NaNs produced

我确信这是因为entropy()正在尝试记录负数。我也知道R可以使用complex()执行复数,但是我没有成功地使用我的数据。我没有在CoPy数据上得到这个错误,只有CoPx数据,因为力平台获得2维压力中心数据。有没有人对complex()使用我的数据集有任何建议,还是有其他功能可以更好地尝试并获得正确的熵计算?与CoPy相比,CoPx中的熵不应该大得多。我还尝试了一些来自其他科目的更多数据集,同样的事情突然出现,CoPx熵测量给了我警告信息,CoPy测量没有。我附加了一个数据集链接,所以任何人都可以自己尝试一下,看看他们是否可以搞清楚,因为数据有点长,只能发布到这里。

Data

编辑:正确答案

正如所建议的,我尝试了table(...)函数并且没有收到任何警告/错误消息,并且熵输出也在预期范围内。但是,我显然忽略了包discretize()中的一个函数,而这正是您应该用来正确设置熵计算数据的。

1 个答案:

答案 0 :(得分:3)

我认为在您的数据上应用<!DOCTYPE html> <html> <head> <title>polymer</title> <script src="https://rawgit.com/webcomponents/webcomponentsjs/master/webcomponents-lite.js"></script> <link rel="import" href="https://rawgit.com/Polymer/polymer/master/polymer.html"> </head> <body> <dom-module id="my-element"> <template> <button on-click="_dosomething">show more</button> <template is="dom-repeat" items="{{myItems}}" > <div hidden$="{{_isItemHidden(item, shownItems)}}">{{item}}</div> </template> </template> </dom-module> <script> HTMLImports.whenReady(function() { Polymer({ is: 'my-element', ready: function() { this.myItems = [1,2,3,4,5]; this.shownItems = [1,2,3] }, _dosomething: function(){ console.log(this.shownItems); this.push('shownItems', 4); console.log(this.shownItems); }, _isItemHidden: function(item, shownItems) { return !shownItems.some(function (i) {return i == item}); } }); }); </script> <my-element></my-element> </body> </html> 功能毫无意义。根据{{​​1}},它

  

根据相应的观察计数 y估计随机变量Y的Shannon熵H

(强调我的)。这意味着您需要将数据(似乎是连续的)转换为首先计算数据,例如通过对其进行分箱。