首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“fitdistrplus”包的问题,t-分发

“fitdistrplus”包的问题,t-分发
EN

Stack Overflow用户
提问于 2015-05-27 23:24:12
回答 2查看 4.8K关注 0票数 3

我试图使t-分布符合我的数据,但无法做到这一点。我的第一次尝试是

代码语言:javascript
复制
fitdistr(myData, "t")

有41个警告,都说NaNs是生产出来的。我不知道怎么会涉及对数。因此,我对数据做了一些调整,使所有数据都大于0,但我仍然存在相同的问题(虽然警告减少了9个.)。sstdFit()也存在同样的问题,会产生NaNs。

因此,我尝试使用我在堆栈溢出和CrossValidated上看到的适配者:

代码语言:javascript
复制
fitdist(myData, "t")

然后我得到

代码语言:javascript
复制
Error in mledist(data, distname, start, fix.arg, ...) :
'start' must be defined as a named list for this distribution

这是什么意思?我试着查看文件,但没告诉我什么。我只是想符合t-分布,这太令人沮丧了。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-27 23:34:00

Start是对发行版参数的初始猜测。其中涉及到日志,因为它使用的是最大似然,因此是日志似然。

代码语言:javascript
复制
library(fitdistrplus)
dat <- rt(100, df=10)
fit <- fitdist(dat, "t", start=list(df=2))
票数 5
EN

Stack Overflow用户

发布于 2017-06-25 19:37:23

我认为值得补充的是,在大多数情况下,使用适配包将t分布与实际数据相匹配会导致非常糟糕的拟合,这实际上是非常误导人的。这是因为在R中使用了默认的t-分布函数,它们不支持移位或缩放。也就是说,如果数据的平均值不是0,或者以某种方式进行缩放,那么fitdist函数只会导致不合适的结果。

在现实生活中,如果数据符合t-分布,它通常会被移动(即平均值大于0)和/或缩放。让我们生成一些这样的数据:

代码语言:javascript
复制
data = 1.5*rt(10000,df=5) + 0.5

鉴于这些数据是从具有5自由度的t分布中取样的,你会认为尝试将t分布拟合到这个分布应该是很好的。但实际上,这是结果。它估计的df为2,并提供了一个不好的适合,如qq图所示。

代码语言:javascript
复制
> fit_bad <- fitdist(data,"t",start=list(df=3))
> fit_bad

Fitting of the distribution ' t ' by maximum likelihood 
Parameters:
   estimate Std. Error
df 2.050967 0.04301357

> qqcomp(list(fit_bad)) # generates plot to show fit

当你适应t分布时,你不仅要估计自由度,而且要估计一个均值和缩放参数。

metRology包提供了一个名为t.scaled的t发行版,除了df参数[metRology]外,还有一个均值和sd参数。现在让我们再来一次:

代码语言:javascript
复制
> library("metRology")
> fit_good <- fitdist(data,"t.scaled",
                      start=list(df=3,mean=mean(data),sd=sd(data)))
> fit_good
Fitting of the distribution ' t.scaled ' by maximum likelihood 
Parameters:
     estimate Std. Error
df   4.9732159 0.24849246
mean 0.4945922 0.01716461
sd   1.4860637 0.01828821

> qqcomp(list(fit_good)) # generates plot to show fit

更好的是:-)参数非常接近我们最初是如何生成数据的!而QQ的情节则更贴切。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30494783

复制
相关文章

相似问题

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