如果对数的对数仍然是凸的,那么适合什么分布?

机器算法验证 对数线性
2022-04-10 20:10:39

我正在尝试使用变量 x 和 y 拟合模型。plot(x, y)表明它是凸的(向下)和衰减的,这让我觉得我需要对 y 进行对数变换,但plot(x, log(y))仍然是凸的,甚至plot(x, log(log(y)))plot(x, log(log(log(y))))凸的,我应该适合什么样的模型?

我的数据是怎么来的?

假设我有一个特征,它只取从 1 到某个大整数的整数值,我想看看这个特征遵循什么分布,所以我对特征进行了简单的计数,CatX将是特征的值,1,2, 3等 CntY将是值在我的数据中出现的次数:

适合模型?

我试图了解我的特征的底层分布,但是我的统计知识非常粗略,那么这应该属于什么分布?

这是 的直接图CntY ~ CatX

CntY ~ CntX

这是一个情节log(log(log(CntY))) ~ CatX

在此处输入图像描述

1个回答

这些数据遵循Zipf 分布是合理的。

为了比较,这里是根据 Zipf(幂律)分布生成的随机数据,其功率接近1.4并在问题和链接的讨论中绘制。我已经调整了功率和总频率以匹配问题中的数字——在有序频率的原始图(左)和(无标题)log-log-log 图(左起第二个)中,匹配看起来相当不错.

数字

分析看起来像这样的数据的一个好方法是在对数轴上显示频率与排名,如上面的“Zipf 图”所示。即使事实证明这些数据不是 Zipf 分布的,与 Zipf 分布的比较(如右侧的“观察与拟合”图所示)也可能提供信息。

R可以从用于生成它们的代码中收集有关这些数字的更多信息。

x <- 1:100
Y <- exp(19.5 - 1.392 * log(x))
Y <- round(Y + rnorm(length(Y), sqrt(Y)))

par(mfrow=c(1,4))
plot(x,Y,pch=19, main="Ordered Frequencies")
abline(h=seq(5e7, 3e8, by=5e7), col="Gray")
abline(v=seq(0, 100, by=25), col="Gray")

plot(x, log(log(log(Y))), pch=19)
abline(h=seq(0.925, 1.10, by=0.025), col="Gray")
abline(v=seq(0, 100, by=25), col="Gray")

plot(x, Y, log="xy", main="Zipf Plot")
beta.hat <- coef(lm(log(Y) ~ I(log(x))))
curve(exp(beta.hat[1]+beta.hat[2]*log(x)), add=TRUE, col="Red")

H <- sum(Y)/sum(x^(beta.hat[2]))
plot(H*x^(beta.hat[2]), Y, log="xy",
     ylab="Observed Frequency", xlab="Fitted Frequency",
     main="Observed vs. Fit")
abline(c(0,1), col="Red")