从截断数据拟合分布

Fit distribution from a truncated data

提问人:vtuna 提问时间:11/17/2023 更新时间:11/17/2023 访问量:33

问:

我正在尝试找到适合截断数据的分布参数。

这里有一个类似的未答复的帖子:将统计分布拟合到截断的数据

     # Generate truncated data, x ~ N(3, 1) and x <= 2

     N <- 10000
     trunc <- rnorm(N, mean = 3, sd = 1)
     trunc <- trunc[which(trunc <= 2)]
     
     print(fitdistr(trunc, densfun = 'normal'))
     >     mean           sd     
     >  1.479185403   0.426895843 
     > (0.010695819) (0.007563086) # does not return mean 3 and sd 1

上面的代码生成了一个插图,其中 x 是从 N(3, 1) 绘制的,但在 2 以上被截断。我可以用 或 恢复原来的正态分布吗?fitdistrfitdistrplus

R fitdistrplus

评论


答:

1赞 Friede 11/17/2023 #1

生成截断数据 x ~ N(3, 1) 和 x <= 2

情况正好相反。 就是为此而生的。有关详细信息,请查看文档,例如 .{extraDistr}?rtnorm

set.seed(1L)
library(extraDistr)
x <- rtnorm(1e5, 3L, 1L, b = 2L)
hist(x, 100, freq = FALSE)

我正在尝试找到适合截断数据的分布参数

然后你可以用@jdblood94的这个答案

> tnorm.mle(x = x, a = -Inf, b = 2L)
       mu     sigma 
2.9575804 0.9877055