我试图在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测量没有。我附加了一个数据集链接,所以任何人都可以自己尝试一下,看看他们是否可以搞清楚,因为数据有点长,只能发布到这里。
编辑:正确答案
正如所建议的,我尝试了table(...)
函数并且没有收到任何警告/错误消息,并且熵输出也在预期范围内。但是,我显然忽略了包discretize()
中的一个函数,而这正是您应该用来正确设置熵计算数据的。
答案 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
(强调我的)。这意味着您需要将数据(似乎是连续的)转换为首先计算数据,例如通过对其进行分箱。