R中连续变量的Tsallis熵
对于离散变量,定义如下:R中连续变量的Tsallis熵,r,entropy,information-theory,R,Entropy,Information Theory,对于离散变量,定义如下: H[p,q] = 1/(q-1) * (1 - sum(p^q)) H[p,q] = 1/(q-1) * (1 - int((p(x)^q dx) 连续变量的Tsallis熵定义如下: H[p,q] = 1/(q-1) * (1 - sum(p^q)) H[p,q] = 1/(q-1) * (1 - int((p(x)^q dx) 其中,p(x)是数据的概率密度函数,int是积分 我试图在R中实现Tsallis熵 假设我有以下数据(由β函数生成,但让我们考虑分布
H[p,q] = 1/(q-1) * (1 - sum(p^q))
H[p,q] = 1/(q-1) * (1 - int((p(x)^q dx)
连续变量的Tsallis熵定义如下:
H[p,q] = 1/(q-1) * (1 - sum(p^q))
H[p,q] = 1/(q-1) * (1 - int((p(x)^q dx)
其中,p(x)
是数据的概率密度函数,int
是积分
我试图在R中实现Tsallis熵
假设我有以下数据(由β函数生成,但让我们考虑分布未知)
set.seed(567)
mystring首先,这是一个统计问题。我鼓励你继续问下去,这样你可能会得到更好的答案
话虽如此,为什么您认为这些值应该是相同的?您正在从贝塔分布中随机抽取一个大小为n(n=500)的样本,并试图通过计算大小为dx(此处,dx=0.01和k~100)的k个容器中的观察值分数来对其进行离散化。通常,每个箱子中的分数取决于k,如下所示:
pi=pio/k
其中,pio是一些基线k=ko的概率向量。换句话说,您拥有的存储箱越多(越小),每个存储箱的对象化就越少。通过绘制具有不同k的直方图(使用breaks=k
)可以看到这一点
你的freqs
向量是Frequency/500
,但k的效果是相同的。箱子的数量当然等于k,所以
总和(pi)=1
独立于k。但是在Tsallis熵的计算中,你不是对pi求和,而是对piq求和(在你的例子中q=3)。所以
sum(piq)~sum([pio/k]q)~(1/kq)*sum([pio]q)
当你对k项求和时,当q=1时,结果将不依赖于k,但对于任何其他q,求和将依赖于k。换句话说,从离散化连续分布计算的Tsallis熵将取决于用于离散化的箱子大小
为了使这个具体,考虑一个离散的U[0,1]和10个容器。这是一个长度为10且所有元素均为0.1的向量。在您的示例中使用q=3
k <- 10
p <- rep(1/k,k)
sum(p^q)
# [1] 0.01
k
par(mfrow=c(1,3))
hist(mystring,breaks=10, ylim=c(0,100))
hist(mystring,breaks=50, ylim=c(0,100))
hist(mystring,breaks=100, ylim=c(0,100))
k <- 10
p <- rep(1/k,k)
sum(p^q)
# [1] 0.01
k <- 100
p <- rep(1/k,k)
sum(p^q)
# [1] 1e-04
f <- function(x) dunif(x)^q
integrate(f,0,1)$value
# 1
library(sfsmisc)
PDF <- density(mystring)
H2 <- 1/(q-1) * (1 - integrate.xy(PDF$x, PDF$y^q))
H2
# [1] -0.6997353
g <- function(x) dbeta(x,2,4)^q
H3 <- 1/(q-1) * (1 - integrate(g,-Inf,Inf)$value)
H3
# [1] -0.8986014