Ajustement d'une distribution normale dans la R
J'utilise le code suivant pour s'adapter à la distribution normale. Le lien pour le jeu de données "b" (trop grand pour poster directement) est :
setwd("xxxxxx")
library(fitdistrplus)
require(MASS)
tazur <-read.csv("b", header= TRUE, sep=",")
claims<-tazur$b
a<-log(claims)
plot(hist(a))
Après avoir tracé l'histogramme, il semble normal de distribution doivent s'adapter bien.
f1n <- fitdistr(claims,"normal")
summary(f1n)
#Length Class Mode
#estimate 2 -none- numeric
#sd 2 -none- numeric
#vcov 4 -none- numeric
#n 1 -none- numeric
#loglik 1 -none- numeric
plot(f1n)
Erreur dans xy.coordonnées(x, y, xlabel, ylabel, journal) :
'x' est une liste, mais n'a pas de composants de 'x' et 'y'
J'obtiens l'erreur ci-dessus lorsque j'essaie de parcelle équipée de distribution de, et même le résumé statistiques sont éteints pour f1n.
Serais reconnaissant de toute aide.
m <- mean(claims); s <- sd(claims)
Vous devez vous connecter pour publier un commentaire.
Semble que vous faites une confusion entre
MASS::fitdistr
etfitdistrplus::fitdist
.MASS::fitdistr
retourne un objet de la classe "fitdistr", et il n'y a pas de complot méthode pour cela. Si vous avez besoin d'extraire des paramètres estimés de la parcelle et l'estimation de la densité de la courbe de vous-même.fitdistrplus
, parce que votre appel de fonction, montre clairement que vous utilisezMASS
. De toute façon,fitdistrplus
a la fonctionfitdist
qui renvoie un objet de la classe "fitdist". Il est de la parcelle méthode de cette classe, mais il ne fonctionne pas pour "fitdistr" renvoyé parMASS
.Je vais vous montrer comment travailler avec les deux packages.
À l'aide de
MASS::fitdistr
Pas de complot de la méthode est disponible, afin de le faire nous-mêmes.
À l'aide de
fitdistrplus::fitdist
mean(x)
,sd(x)
... ???Examen de la réponse précédente
Dans la réponse précédente, je n'ai pas parler de la différence entre les deux méthodes. En général, si nous optons pour le maximum de vraisemblance inférence je vous conseille d'utiliser
MASS::fitdistr
, parce que, pour beaucoup de base des distributions il effectue l'inférence exacte au lieu de l'optimisation numérique. Doc de?fitdistr
fait ce assez clair:D'autre part,
fitdistrplus::fitdist
effectue toujours inférence sous forme numérique, même si l'inférence exacte existe. Bien sûr, l'avantage defitdist
est que de plus en plus d'inférence principe est disponible:But de cette réponse
Cette réponse est d'aller explorer l'inférence exacte de distribution normale. Il aura une partie théorique de la saveur, mais il n'y a aucune preuve de la probabilité principe; seuls les résultats sont donnés. Sur la base de ces résultats, nous écrivons notre propre fonction R pour l'inférence exacte, ce qui peut être comparé avec
MASS::fitdistr
. D'autre part, à comparer avecfitdistrplus::fitdist
, nous utilisonsoptim
numériquement minimiser la log-vraisemblance négative de la fonction.C'est une excellente occasion d'apprendre les statistiques et relativement à l'utilisation avancée de
optim
. Pour plus de commodité, je vais estimer le paramètre d'échelle: l'écart, plutôt que d'erreur standard.L'inférence exacte de la distribution normale
Écrit inférence fonction de nous-mêmes
Suivants du code est bien commenté. Il y a un commutateur
exact
. Si la valeurFALSE
, la solution numérique est choisi.Nous continuons à utiliser les données précédentes pour les essais de:
Méthode numérique est également assez juste, sauf que la variance covariance n'est pas exacte 0 hors de la diagonale: