Come posso determinare i parametri weibull dai dati?


10

Ho un istogramma di dati sulla velocità del vento che viene spesso rappresentato usando una distribuzione weibull. Vorrei calcolare la forma del weibull e i fattori di scala che si adattano meglio all'istogramma.

Ho bisogno di una soluzione numerica (al contrario delle soluzioni grafiche ) perché l'obiettivo è determinare la forma weibull a livello di codice.

Modifica: i campioni vengono raccolti ogni 10 minuti, la velocità del vento viene mediata su 10 minuti. I campioni includono anche la velocità massima e minima del vento registrata durante ogni intervallo, che al momento sono ignorati ma vorrei incorporare in seguito. La larghezza del contenitore è di 0,5 m / s

Istogramma per 1 mese di dati


1
quando dici di avere l'istogramma, intendi anche avere le informazioni sulle osservazioni o conosci SOLO la larghezza e l'altezza del cestino?
suncoolsu

@suncoolsu Ho tutti i punti dati. Set di dati che vanno da 5.000 a 50.000 record.
klonq,

Non potresti prendere un campione casuale di dati ed eseguire un MLE dei parametri?
schenectady,

2
Qual è lo scopo della stima? Caratterizzare retrospettivamente le condizioni passate? Prevedere la futura generazione di energia in una posizione? Prevedere la generazione di energia all'interno di una griglia di turbine? Per calibrare un modello meteorologico? Ecc. Per questa domanda, determinare una soluzione appropriata dipende criticamente da come verrà utilizzata.
whuber

@whuber al momento l'idea è di riassumere i set di dati del vento in una forma che consenta il confronto da periodo a periodo e / o da sito a sito. Successivamente l'obiettivo sarà confrontare le tendenze e, come dici tu, per formare giudizi sulla produzione futura, ecc. Sono un principiante delle statistiche, ma ho una montagna di dati (che non posso condividere) e vorrei estrarre come più informazioni possibili da esso. Se puoi indicarmi qualsiasi lettura su questo argomento, sarebbe molto apprezzato.
klonq

Risposte:


11

La stima della massima verosimiglianza dei parametri di Weibull può essere una buona idea nel tuo caso. Una forma di distribuzione Weibull si presenta così:

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

Dove sono parametri. Date le osservazioni , la funzione di verosimiglianza log èθ,γ>0X1,,Xn

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

Una soluzione "basata sulla programmazione" sarebbe quella di ottimizzare questa funzione usando l'ottimizzazione vincolata. Risolvendo per la soluzione ottimale:

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

Eliminando otteniamo:θ

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

Ora questo può essere risolto per la stima ML . Ciò può essere realizzato con l'ausilio di procedure iterative standard che vengono risolte per trovare la soluzione di equazione come - Newton-Raphson o altre procedure numeriche.γ^

Ora può essere trovato in termini di come:θγ^

θ^=1nxiγ^n

Una cosa di cui sarei cauto è che sembra che qui abbiamo dati sulle serie temporali. Se i dati vengono campionati in un breve lasso di tempo, supporre che l'indipendenza possa essere pericolosa. Detto questo, (+1).
cardinale il

@cardinal Per favore, spiega. I dati variano nel corso di un mese o fino a un anno, ma vengono campionati regolarmente (10 minuti). Cosa potrebbe implicare questo?
klonq,

@cardinal Grazie per averlo segnalato. Non ero nemmeno sicuro che l'assunzione dell'indipendenza fosse appropriata.
suncoolsu

1
@klonq, come viene prelevato il campione? È la velocità media nei dieci minuti tra le registrazioni? Oltre un minuto prima della registrazione? La velocità istantanea al momento della registrazione? Principalmente sarei alla ricerca di correlazioni seriali, che potrebbero ridurre considerevolmente la dimensione effettiva del campione. L'utilizzo di una stima ML basata su un'ipotesi di campioni indipendenti può o meno fornire una buona stima in tale contesto e occorre prestare particolare attenzione a qualsiasi inferenza basata sulla stima. L'approccio di Suncoolsu fornisce sicuramente una prima linea di attacco.
cardinale il

@klonq - Se possibile, puoi descrivere come è stato raccolto il tuo campione? Che aspetto hanno i dati?
suncoolsu,

12

Usa fitdistrplus:

Hai bisogno di aiuto per identificare una distribuzione dal suo istogramma

Ecco un esempio di come si adatta Weibull Distribution:

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

inserisci qui la descrizione dell'immagine


Grazie, ma sto cercando di trovare una soluzione in Java.
klonq,

qualche puntatore nella codifica R per ottenere fattori di forma e scala? Grazie.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.