gpt4 book ai didi

r - 如何拟合R中的频率分布?

转载 作者:行者123 更新时间:2023-12-04 09:40:50 24 4
gpt4 key购买 nike

是否有可用于拟合 R 中频率分布的函数?我知道 fitdistr但据我所知,它只适用于数据向量(随机样本)。另外,我知道在两种格式之间转换很简单,但频率太大以至于内存是一个问题。

例如,fitdistr可以通过以下方式使用:

x<-rpois(100, lambda=10)
fitdistr(x,"poisson")

是否有一个函数可以在频率表上进行相同的拟合?沿线的东西:
freqt <- as.data.frame(table(x))
fitfreqtable(freqt$x, weights=freqt$Freq, "poisson")

谢谢!

最佳答案

没有我所知道的用于将分布拟合到频率表的内置函数。请注意,理论上,连续分布不适用于表格,因为数据是离散的。当然,对于足够大的 N 和足够细的网格,这可以忽略不计。

您可以使用 optim 构建自己的模型拟合函数或任何其他优化器,如果你知道你感兴趣的密度。我做了这个 here对于 Gamma 分布(对于该特定数据集来说这是一个糟糕的假设,但没关系)。

代码转载如下。

negll <- function(par, x, y)
{
shape <- par[1]
rate <- par[2]
mu <- dgamma(x, shape, rate) * sum(y)
-2 * sum(dpois(y, mu, log=TRUE))
}


optim(c(1, 1), negll, x=seq_along(g$count), y=g$count, method="L-BFGS-B", lower=c(.001, .001))
$par
[1] 0.73034879 0.00698288

$value
[1] 62983.18

$counts
function gradient
32 32

$convergence
[1] 0

$message
[1] "CONVERGENCE: REL_REDUCTION_OF_F <= FACTR*EPSMCH"

关于r - 如何拟合R中的频率分布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17265645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com