如何使用 fitdistrplus 估计 t 分布的比例参数的位置?我知道我需要提供初始值(在 MASS 中它工作得很好)但是在这个包中只允许 df。你有什么解决办法吗?
非常感谢。
如何使用 fitdistrplus 估计 t 分布的比例参数的位置?我知道我需要提供初始值(在 MASS 中它工作得很好)但是在这个包中只允许 df。你有什么解决办法吗?
非常感谢。
fitdistrplus 包中的fitdist
函数使用基于 distr 参数的分布函数。所以给定这段代码:
data = 1.5*rt(10000,df=5) + 0.5
fit1 <- fitdist(data,"t",start=list(df=3))
fitdist
正在使用 R函数rt
、dt
和。但是这些函数不支持位置和比例参数(因此上面的代码只会优化 df 参数并提供非常糟糕的拟合)。因此,解决方案是使用提供所需参数的 t 分布版本。metRology 包提供了这样一个版本的metRology。该包中的分布称为 t.scaled,并定义了适当的函数(、和)。pt
qt
rt.scaled
dt.scaled
pt.scaled
qt.scaled
现在您可以拟合三个参数 df、mean 和 sd:
> library("metRology")
> fit2 <- fitdist(data,"t.scaled",
start=list(df=3,mean=mean(data),sd=sd(data)))
基础 R 中的位置和比例参数可以根据这篇Wikipedia文章进行扩展。
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)
Student t 分布应采用 2 个参数,即自由度数和与零数的偏移量。看看这是否适合你:
library(fitdistrplus)
#sample data
x<-rnorm(10, 2)
fitdist(x, "t", start= list(df=length(x), ncp=mean(x)))
报告的两个值应该是估计的自由度和偏移值。