Comment puis-je déterminer les paramètres weibull à partir des données?

10

J'ai un histogramme des données de vitesse du vent qui est souvent représenté en utilisant une distribution de Weibull. Je voudrais calculer la forme et les facteurs d'échelle de Weibull qui donnent le meilleur ajustement à l'histogramme.

J'ai besoin d'une solution numérique (par opposition aux solutions graphiques ) car le but est de déterminer la forme weibull par programmation.

Edit: Les échantillons sont collectés toutes les 10 minutes, la vitesse du vent est moyenne sur les 10 minutes. Les échantillons incluent également la vitesse maximale et minimale du vent enregistrée au cours de chaque intervalle, qui sont actuellement ignorées, mais je voudrais les intégrer plus tard. La largeur du bac est de 0,5 m / s

Histogramme pour 1 mois de données

klonq
la source
1
lorsque vous dites que vous avez l'histogramme - voulez-vous dire également avoir les informations sur les observations ou connaissez-vous UNIQUEMENT la largeur et la hauteur du bac?
suncoolsu
@suncoolsu J'ai tous les points de données. Ensembles de données allant de 5 000 à 50 000 enregistrements.
klonq
Ne pourriez-vous pas prendre un échantillon aléatoire des données et effectuer un MLE des paramètres?
schenectady
2
Quel est le but de l'estimation? Pour caractériser rétrospectivement les conditions passées? Pour prédire la future production d'électricité à un seul endroit? Pour prévoir la production d'électricité dans un réseau de turbines? Calibrer un modèle météorologique? Etc. Pour cette question, la détermination d'une solution appropriée dépend essentiellement de la façon dont elle sera utilisée.
whuber
@whuber à l'heure actuelle, l'idée est de résumer les ensembles de données sur le vent sous une forme permettant une comparaison d'une période à l'autre et / ou d'un site à l'autre. Plus tard, l'objectif sera de comparer les tendances et, comme vous le dites, de porter un jugement sur la production future, etc. Je suis très novice dans les statistiques, mais j'ai une montagne de données (que je ne peux pas partager) et je voudrais extraire autant d'informations que possible. Si vous pouvez me signaler une lecture à ce sujet, ce serait très apprécié.
klonq

Réponses:

11

L'estimation du maximum de vraisemblance des paramètres de Weibull peut être une bonne idée dans votre cas. Une forme de distribution de Weibull ressemble à ceci:

(γ/θ)(x)γ1exp(xγ/θ)

Où sont des paramètres. Étant donné les observations , la fonction log-vraisemblance estθ,γ>0X1,,Xn

L(θ,γ)=i=1nlogf(Xi|θ,γ)

Une solution "basée sur la programmation" serait d'optimiser cette fonction en utilisant une optimisation contrainte. Résoudre pour une solution optimale:

logLγ=nγ+1nlogxi1θ1nxiγlogxi=0
logLθ=nθ+1θ21nxiγ=0

En éliminant nous obtenons:θ

[1nxiγlogxi1nxiγ1γ]=1n1nlogxi

Maintenant, cela peut être résolu pour l'estimation ML . Cela peut être accompli à l'aide de procédures itératives standard qui résolvent sont utilisées pour trouver la solution de l'équation comme - Newton-Raphson ou d'autres procédures numériques.γ^

Maintenant peut être trouvé en termes de comme:θγ^

θ^=1nxiγ^n
suncoolsu
la source
Une chose dont je serais prudent, c'est qu'il semble que nous ayons ici des données chronologiques. Si les données sont échantillonnées sur une courte période, il peut être dangereux de supposer l'indépendance. Cela dit, (+1).
Cardinal
@cardinal Veuillez expliquer. Les données varient sur un mois ou jusqu'à un an, mais sont échantillonnées régulièrement (10 minutes). Qu'est-ce que cela pourrait impliquer?
klonq
@cardinal Merci de l'avoir signalé. Je ne savais pas non plus si l'hypothèse d'indépendance était appropriée.
suncoolsu
1
@klonq, comment l'échantillon est-il prélevé? Est-ce la vitesse moyenne sur les dix minutes entre les enregistrements? Plus d'une minute avant l'enregistrement? La vitesse instantanée au moment de l'enregistrement? La plupart du temps, je chercherais des corrélations en série, ce qui pourrait réduire considérablement la taille effective de votre échantillon. L'utilisation d'une estimation de la LM basée sur une hypothèse d'échantillons indépendants peut ou non vous donner une bonne estimation dans ce contexte, et une attention particulière doit être portée à toute inférence basée sur l'estimation. L'approche de Suncoolsu fournit certainement une première ligne d'attaque.
Cardinal
@klonq - Si possible, pouvez-vous décrire comment votre échantillon a été collecté? À quoi ressemblent les données?
suncoolsu
12

Utilisez fitdistrplus:

Besoin d'aide pour identifier une distribution par son histogramme

Voici un exemple de la façon dont la distribution Weibull est adaptée:

library(fitdistrplus)

#Generate fake data
shape <- 1.9
x <- rweibull(n=1000, shape=shape, scale=1)

#Fit x data with fitdist
fit.w <- fitdist(x, "weibull")
summary(fit.w)
plot(fit.w)


Fitting of the distribution ' weibull ' by maximum likelihood 
Parameters : 
       estimate Std. Error
shape 1.8720133 0.04596699
scale 0.9976703 0.01776794
Loglikelihood:  -636.1181   AIC:  1276.236   BIC:  1286.052 
Correlation matrix:
          shape     scale
shape 1.0000000 0.3166085
scale 0.3166085 1.0000000

entrez la description de l'image ici

bill_080
la source
Merci, mais j'essaie de trouver une solution en Java.
klonq
des pointeurs dans le codage R pour obtenir des facteurs de forme et d'échelle? Merci.