Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中连续变量的Tsallis熵_R_Entropy_Information Theory - Fatal编程技术网

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