首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在R中拟合频率分布?

如何在R中拟合频率分布?
EN

Stack Overflow用户
提问于 2013-06-24 01:27:23
回答 3查看 2K关注 0票数 4

有没有一个函数可以用来拟合R中的频率分布?我知道fitdistr,但据我所知,它只适用于数据向量(随机样本)。此外,我知道两种格式之间的转换是微不足道的,但频率太大了,内存是一个问题。

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

代码语言:javascript
运行
复制
x<-rpois(100, lambda=10)
fitdistr(x,"poisson")

有没有一个函数可以在频率表上做同样的拟合?大致是这样的:

代码语言:javascript
运行
复制
freqt <- as.data.frame(table(x))
fitfreqtable(freqt$x, weights=freqt$Freq, "poisson")

谢谢!

EN

Stack Overflow用户

回答已采纳

发布于 2013-06-24 09:26:28

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

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

下面重现的代码。

代码语言:javascript
运行
复制
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"
票数 4
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17265645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档