离散变量的Tsallis熵定义如下:
离散变量的Tsallis熵为:
H[p,q] = 1/(q-1) * (1 - sum(p^q))
连续变量的Tsallis熵定义如下:
H[p,q] = 1/(q-1) * (1 - int((p(x)^q dx)
其中p(x)
是数据的概率密度函数,int
是积分。
我正在尝试在R中实现Tsallis熵。
假设我有以下数据(由beta函数生成,但假设分布未知)
set.seed(567)
mystring <- round(rbeta(500, 2,4), 2)
离散变量的Tsallis熵为:
freqs <- table(mystring) / 500
q = 3
H1 <- 1/(q-1) * (1 - sum(freqs^q))
[1] 0.4998426
我现在想计算连续变量的Tsallis熵:
PDF <- density(mystring)
library(sfsmisc)
xPDF <- PDF$x
yPDF <- PDF$y
H1 <- 1/(q-1) * (1 - integrate.xy(xPDF, yPDF^q))
[1] -0.6997353
正如我所预料的那样,这两个结果是不同的。但为什么会有这么大的差异呢? 我的主要问题是:用于计算连续变量熵的Tsallis熵代码是否正确?请记住,我假设分布是未知的。