Я пытаюсь подогнать определенное усеченное распределение к набору данных. Например, для логнормального распределения я определяю функцию плотности усеченного распределения как:
dtlnorm <- function(x, meanlog, sdlog,low)
dlnorm(x,meanlog,sdlog)/(1-plnorm(low,meanlog,sdlog))* (x >= low)
где low - точка усечения.
Мои данные - это следующий вектор
Data <- c(1068295.00589834, 1406446.49289834, 1540330.78489834, 1152321.94489834,
3108649.66189834, 3718417.97089834, 2981945.18089834, 4552923.31989834,
5747260.98289834, 2105461.57989834, 1044515.95889834, 1133641.75289834,
3847920.72789834, 2536441.02989834, 3073854.15789834, 1591039.28389834,
2592446.73289834, 4989152.55189834, 2426457.45489834, 120265066.499898,
6888222046.1999, 1092811.87089834, 3440123.51689834, 74684298.1398983,
1475038.27689834, 1124226.39489834, 11739544.5798983, 1187688.74489834,
1023193.88789834, 18784663.9698983)
Чтобы подогнать под раздачу, пишу:
fitdist(Data,distr="tlnorm",method="mle",start = list(meanlog=0,sdlog=0),fix.arg = list(low=100))
Но появляется следующая ошибка:
Error in fitdist(Data, distr = "tlnorm", method = "mle", start = list(meanlog = 0, :
the function mle failed to estimate the parameters,
with the error code 100
Я не знаю, что происходит. Кто-нибудь может мне помочь? Спасибо!
ptlnorm
иqtlnorm
, то есть распределение и квантиль. Говорится имя символьной строки, обозначающее распределение, для которого должны быть определены соответствующая функция плотности dname, соответствующая функция распределения pname и соответствующая функция квантиля qname, или непосредственно функция плотности. Похоже, вы можете отправитьdtlnorm
без кавычек, возможно, это сработает, например.distr=dtlnorm
. Возможно, все еще понадобятся другие функции, хотя - person Jonny Phelps   schedule 27.11.2019dput
функцию, пожалуйста? - person Jonny Phelps   schedule 27.11.2019