分析比例

机器算法验证 r 多项分布
2022-03-02 05:15:37

我有一个数据集,其中包含多个加起来为 1 的比例。我对这些比例沿梯度的变化感兴趣(参见下面的示例数据)。

gradient <- 1:99
A1 <- gradient * 0.005
A2 <- gradient * 0.004
A3 <- 1 - (A1 + A2)

df <- data.frame(gradient = gradient,
                 A1 = A1,
                 A2 = A2,
                 A3 = A3)

require(ggplot2)
require(reshape2)
dfm <- melt(df, id = "gradient")
ggplot(dfm, aes(x = gradient, y = value, fill = variable)) +
  geom_area()

在此处输入图像描述

附加信息: 它不一定是线性的,我这样做只是为了便于示例。计算这些比例的原始计数也是可用的。真实数据集包含更多变量加起来为 1(例如 B1、B2 和 B3、C1 到 C4 等) - 所以多变量解决方案的提示也会有帮助......但现在我会坚持单变量统计方面。

问题: 如何分析这样的数据?我已经阅读了一些内容,也许多项式模型或 glm 适合?- 如果我运行 3(或 2)个 glms,我如何结合预测值总和为 1 的约束?我不想只绘制这类数据,我还想做更深入的回归分析。我最好想使用 R - 我怎样才能在 R 中做到这一点?

2个回答

在一个维度上,这听起来像是 beta 回归的工作(有或没有可变分散)。这是一个回归模型,具有 beta 分布的因变量,自然 0-1 约束。R 包是betareg,描述它的使用的论文在这里
对于两个以上的比例,Beta 分布的通常扩展会导致 Dirichlet 回归。一个 R 包DirichletReg可用,例如这里描述。

有一些理由不对真实的成分数据使用 logit 链接和多项逻辑回归,主要与它们对方差的强假设有关。但是,如果您的数据实际上都是标准化计数(丰度?),那么这些假设可能是正确的,彼得的建议可能是可行的方法。

我不确定您到底想找出什么,但是以梯度作为自变量的多项逻辑回归呢?

在 R 中,一种方法是 mlogit 库中的 mlogit 函数。看到这个小插曲