Comment ajuster les paramètres d'une distribution t, c'est-à-dire les paramètres correspondant à la «moyenne» et à «l'écart-type» d'une distribution normale. Je suppose qu'ils sont appelés «moyenne» et «échelle / degrés de liberté» pour une distribution t?
Le code suivant entraîne souvent des erreurs «échec de l'optimisation».
library(MASS)
fitdistr(x, "t")
Dois-je d'abord mettre à l'échelle x ou convertir en probabilités? Comment le faire au mieux?
r
distributions
maximum-likelihood
fitting
robust
user12719
la source
la source
Réponses:
fitdistr
utilise des techniques de maximisation de vraisemblance et d'optimisation pour trouver les paramètres d'une distribution donnée. Parfois, en particulier pour la distribution t, comme l'a remarqué @ user12719, l'optimisation sous la forme:échoue avec une erreur.
Dans ce cas, vous devez donner un coup de main à l'optimiseur en fournissant le point de départ et la borne inférieure pour commencer à rechercher les paramètres optimaux:
Notez que
df=3
c'est votre meilleure estimation de ce quedf
pourrait être un "optimal" . Après avoir fourni ces informations supplémentaires, votre erreur disparaîtra.Quelques extraits pour vous aider à mieux comprendre les mécanismes internes de
fitdistr
:...
la source
Essayons quelques simulations:
L'affichage de l'estimation est très instable (en regardant l'histogramme, une partie importante des valeurs estimées est à la limite supérieure donnée pour optimiser de 200).
Répéter avec un échantillon plus grand:
ce qui est beaucoup mieux, mais la moyenne est toujours bien supérieure à la valeur réelle de 2,5.
N'oubliez pas qu'il s'agit d'une version simplifiée du problème réel où les paramètres de localisation et d'échelle doivent également être estimés.
la source
Dans l'aide pour fitdistr se trouve cet exemple:
indiquant que vous avez juste besoin d'une valeur pour df. Mais cela suppose une normalisation.
Pour plus de contrôle, ils montrent également
où les paramètres seraient m = moyenne, s = écart type, df = degrés de liberté
la source
\mu
et\sigma
aussi. +1 il y a longtemps, au fait.df
est la cause de l'erreur, et la bonne réponse devrait fournir une recette pour la trouver.df=9
est bon dans leur exemple et non pertinent ici.