首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在fitdistrplus中用尺度和位置参数拟合t分布

如何在fitdistrplus中用尺度和位置参数拟合t分布
EN

Stack Overflow用户
提问于 2016-07-30 06:54:33
回答 3查看 5.4K关注 0票数 2

如何使用fitdistrplus来估计t分布的位置和尺度参数?我知道我需要提供初始值(总体上它工作得很好),但在这个包中只允许使用df。你有什么解决方案吗?

非常感谢。

EN

回答 3

Stack Overflow用户

发布于 2017-06-26 04:00:11

fitdistrplus包中的fitdist函数使用基于distr参数的分布函数。因此,给定以下代码:

代码语言:javascript
复制
data = 1.5*rt(10000,df=5) + 0.5
fit1 <- fitdist(data,"t",start=list(df=3))

fitdist使用的是R函数rtdtptqt。但是这些函数不支持位置和比例参数(因此上面的代码只会优化df参数并提供非常差的拟合)。因此,解决方案是使用t分布的一个版本,它确实提供了您想要的参数。metRology包提供了这样一个版本的metRology。该包中的发行版称为t.scaled,并定义了相应的函数(rt.scaleddt.scaledpt.scaledqt.scaled)。

现在,您可以使用三个参数df、mean和sd:

代码语言:javascript
复制
> library("metRology")
> fit2 <- fitdist(data,"t.scaled",
                  start=list(df=3,mean=mean(data),sd=sd(data)))
票数 2
EN

Stack Overflow用户

发布于 2020-02-13 10:59:39

可以根据这篇Wikipedia文章扩展base R中的位置和比例参数。

代码语言:javascript
复制
library(fitdistrplus)
x<-rt(100,23)
dt_ls <- function(x, df=1, mu=0, sigma=1) 1/sigma * dt((x - mu)/sigma, df)
pt_ls <- function(q, df=1, mu=0, sigma=1)  pt((q - mu)/sigma, df)
qt_ls <- function(p, df=1, mu=0, sigma=1)  qt(p, df)*sigma + mu
rt_ls <- function(n, df=1, mu=0, sigma=1)  rt(n,df)*sigma + mu
fit.t<-fitdist(x, 't_ls', start =list(df=1,mu=mean(x),sigma=sd(x))) 
summary(fit.t)
票数 2
EN

Stack Overflow用户

发布于 2016-07-30 10:46:23

学生t分布应该有两个参数,自由度数和从零数的偏移量。看看这对你是否有效:

代码语言:javascript
复制
library(fitdistrplus)
#sample data
x<-rnorm(10, 2)

fitdist(x, "t", start= list(df=length(x), ncp=mean(x)))

报告的两个值应该是估计自由度和偏移值。

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

https://stackoverflow.com/questions/38668587

复制
相关文章

相似问题

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