Распределительная арматура в R

Я хочу соответствовать распределению. Если у меня есть набор данных, я могу сделать это довольно легко:

library("fitdistrplus")
data_raw <- c(1018259, 1191258, 1265953, 1278234, 1630327, 1780896, 1831466, 1850446, 1859801, 1928695, 2839345, 2918672, 3058274, 3303089, 3392047, 3581341, 4189346, 5966833, 11451508)
fitdist(data_raw, "lnorm")

Это то, что я хотел бы сделать, чтобы логнормальное распределение соответствовало моему набору данных.
Но что, если у меня нет набора данных, только среднее значение, стандартное отклонение и некоторые квантили. Например:

Среднее значение: 2965042
std.dev: 2338555

Квантили:
0,1: 1251014
0,5: 1928695
0,8: 3467765
0,9: 4544843
0,95: 6515300
0,999: 11352784

Как бы вы соответствовали оценке для такого рода данных?

Спасибо и наилучшими пожеланиями
Norbi

1 ответ

Решение

Просто подгоните модель с nls:

DF <- read.table(text = "0.1: 1251014
                 0.5: 1928695
                 0.8: 3467765
                 0.9: 4544843
                 0.95: 6515300
                 0.999: 11352784 ", sep = ":")
plot(V1 ~ V2, data = DF, 
     xlim = c(0, 1.2e7),ylim = c(0, 1))


fit <- nls(V1 ~ plnorm(V2, meanlog, sdlog), data = DF, 
           start = list(meanlog = 13, sdlog = 2), trace = TRUE, algorithm = "port",
           lower = c(0, 0))

summary(fit)

curve(plnorm(x, coef(fit)[[1]], coef(fit)[[2]]), add = TRUE, col = "blue")

ht tps://stackru.com/images/6345975230738c028230bae351d7f3f00e3027f7.png

Другие вопросы по тегам