Affidabilità di una curva adattata?


11

Vorrei stimare l'incertezza o l'affidabilità di una curva adattata. Non desidero intenzionalmente una quantità matematica precisa che sto cercando, poiché non so di cosa si tratti.

Qui (energia) è la variabile dipendente (risposta) e (volume) è la variabile indipendente. Vorrei trovare la curva del volume di energia, E (V) , di alcuni materiali. Quindi ho fatto alcuni calcoli con un programma per computer di chimica quantistica per ottenere l'energia per alcuni volumi di campione (cerchi verdi nella trama).EVE(V)

Quindi ho inserito questi campioni di dati con la funzione Birch – Murnaghan :

E(E|V)=E0+9V0B016{[(V0V)231]3B0+[(V0V)231]2[64(V0V)23]},
che dipende da quattro parametri: E0,V0,B0,B0' . Suppongo anche che questa sia la funzione di adattamento corretta, quindi tutti gli errori provengono solo dal rumore dei campioni. In quanto segue, la funzione attrezzata (E^) sarà scritto in funzione di V .

Qui puoi vedere il risultato (adattamento con un algoritmo dei minimi quadrati). La variabile y è E e la variabile x è V . La linea blu è adatta e i cerchi verdi sono i punti campione.

Vestibilità Birch – Murnaghan (blu) del campione (verde)

Ora ho bisogno di una certa misura dell'affidabilità (nella migliore delle ipotesi in base al volume) di questa curva adattata, E^(V) , perché ne ho bisogno per calcolare ulteriori quantità come pressioni di transizione o entalpie.

La mia intuizione mi dice che la curva adattata è più affidabile nel mezzo, quindi suppongo che l'incertezza (diciamo intervallo di incertezza) dovrebbe aumentare vicino alla fine dei dati del campione, come in questo schizzo: inserisci qui la descrizione dell'immagine

Tuttavia, che tipo di misura sto cercando e come posso calcolarlo?

Per essere precisi, in realtà esiste solo una fonte di errore: i campioni calcolati sono rumorosi a causa dei limiti computazionali. Quindi, se calcolassi una serie densa di campioni di dati, formerebbero una curva irregolare.

La mia idea di trovare la stima dell'incertezza desiderata è calcolare il seguente "errore" in base ai parametri man mano che lo apprendi a scuola ( propagazione dell'incertezza ):

ΔE(V)=(E(V)E0ΔE0)2+(E(V)V0ΔV0)2+(E(V)B0ΔB0)2+(E(V)B0'ΔB0')2
Il e sono forniti dal software di fitting.ΔE0,ΔV0,ΔB0ΔB0'

È un approccio accettabile o sto sbagliando?

PS: So che potrei anche semplicemente riassumere i quadrati dei residui tra i miei campioni di dati e la curva per ottenere una sorta di "errore standard", ma questo non dipende dal volume.


nessuno dei tuoi parametri è un esponente, il che è positivo. Quale software NLS hai usato? La maggior parte restituirà una stima dell'incertezza parametrica (che può essere completamente irrealistica se i parametri sono esponenti, ma non è questo il caso).
DeltaIV

Non c'è A sul lato destro dell'equazione ma appare nella trama. Quando dici "quattro parametri", intendi i parametri in senso statistico (nel qual caso, dove sono i tuoi IV) o intendi le variabili (nel qual caso dove sono i tuoi parametri)? Si prega di chiarire i ruoli dei simboli: cosa viene misurato e quali sono le incognite?
Glen_b -Restastate Monica il

1
Penso che la V sia A ^ 3. è quello che ho usato e la mia trama sembrava identica alla sua.
Dave Fournier,

@Glen_b Ho appena ipotizzato che l'asse Y sia E nella funzione Birch – Murnaghan mentre l'asse x è V. I quattro parametri sono i quattro parametri nella funzione Birch – Murnaghan. Se supponi di avere qualcosa che assomigli a quello che ha.
Dave Fournier,

Ah, aspetta, finalmente capisco. non è un operatore di aspettativa (come mi aspetterei di vedere su LHS di un'equazione senza un termine di errore su RHS), è la variabile di risposta scritta come una funzione nella forma . GRANDE SUGGERIMENTO a tutti: non mostrare un'equazione con a sinistra di un'equazione di regressione a uno statistico senza definire attentamente ciò che intendi, perché probabilmente assumeranno che sia un'aspettativa. E y ( x ) E ( )E()Ey(x)E()
Glen_b

Risposte:


8

Questo è un normale problema dei minimi quadrati!

Definizione

x=V2/3, w=V01/3,

il modello può essere riscritto

E(E|V)=β0+β1x+β2x2+β3x3

dove i coefficienti sono algebricamente correlati ai coefficienti originali tramiteβ=(βi)

16β=(16E0+54B0w3-9B0B0'w3-144B0w5+27B0B0'w5126B0w7-27B0B0'w7-36B0w9+9B0B0'w9).

Questo è semplice da risolvere algebricamente o numericamente: scegli la soluzione per cui e sono positivi. L'unico motivo per farlo è ottenere stime di ed e verificare che siano fisicamente significative. Tutte le analisi dell'adattamento possono essere eseguite in termini di . w B 0 , B 0 , w E 0 βB0,B0'wB0,B0',wE0β

Questo approccio non è solo molto più semplice di un adattamento non lineare, ma è anche più accurato: la matrice varianza-covarianza per restituita da un adattamento non lineare è solo un'approssimazione quadratica locale alla distribuzione di campionamento di questi parametri, mentre (per errori normalmente distribuiti nella misurazione , comunque) i risultati OLS non sono approssimazioni.E(E0,B0,B0',V0)E

Intervalli di confidenza, intervalli di previsione, ecc. Possono essere ottenuti nel solito modo senza dover trovare questi valori: calcolarli in termini di stime e loro matrice varianza-covarianza. (Anche Excel potrebbe farlo!) Ecco un esempio, seguito dal (semplice) codice che lo ha prodotto.β^R

figura

#
# The data.
#
X <- data.frame(V=c(41, 43, 46, 48, 51, 53, 55.5, 58, 60, 62.5),
                E=c(-48.05, -48.5, -48.8, -49.03, -49.2, -49.3, -49.35, 
                    -49.34, -49.31, -49.27))
#
# OLS regression.
#
fit <- lm(E ~ I(V^(-2/3)) + I(V^(-4/3)) + I(V^(-6/3)), data=X)
summary(fit)
beta <- coef(fit)
#
# Prediction, including standard errors of prediction.
#
V0 <- seq(40, 65)
y <- predict(fit, se.fit=TRUE, newdata=data.frame(V=V0))
#
# Plot the data, the fit, and a three-SEP band.
#
plot(X$V, X$E, xlab="Volume", ylab="Energy", bty="n", xlim=c(40, 60))
polygon(c(V0, rev(V0)), c(y$fit + 3*y$se.fit, rev(y$fit - 3*y$se.fit)),
        border=NA, col="#f0f0f0")
curve(outer(x^(-2/3), 0:3, `^`) %*% beta, add=TRUE, col="Red", lwd=2)
points(X$V, X$E)

Se sei interessato alla distribuzione congiunta delle stime dei parametri originali, allora è facile simulare dalla soluzione OLS: generare semplicemente realizzazioni multivariate normali di e convertirle nei parametri. Ecco una matrice scatterplot di 2000 di queste realizzazioni. La forte curvilinearità mostra perché è probabile che il metodo Delta dia scarsi risultati.β

figura 2


1
Mentre è vero che gli algoritmi per il montaggio di modelli lineari sono molto più numericamente stabili rispetto a quelli per i modelli non lineari, non è vero che ci sia una differenza nella precisione della diagnostica fintanto che l'algoritmo di adattamento non lineare converge. Ho controllato e abbiamo la stessa somma residua di quadrati per almeno 4 fichi di sig. Anche la parametrizzazione lineare che hai scelto è molto confusa in modo che nessuno dei parametri sia significativo secondo il test t. Tutti i miei lo sono. Non è un grosso problema, ma divertente e potrebbe confondere il giovane giocatore.
Dave Fournier,

Inoltre, suppongo che tu non abbia risposto alla domanda del PO da quando ha dichiarato di voler qualcosa di simile ai limiti di fiducia per la funzione del volume dell'entalpia
Dave Fournier,

1
@Dave Questi sono punti premurosi, grazie. In un problema fisico in genere non ci si preoccupa del significato: la teoria implica tutte le variabili. Uno è invece interessato alla stima dei valori. Sebbene entrambi gli approcci debbano raggiungere la stessa perdita minima (somma dei quadrati dei residui), OLS produce distribuzioni corrette per la varianza campionaria dei suoi parametri. L'approccio non lineare no. È accurato applicare la trasformazione dalla distribuzione di a , ma usare le covarianze di è solo un'approssimazione. ( E 0 , ... ) ( E 0 ... )β(E0,...)(E^0...)
whuber

Il tuo modello e il mio sono identici indipendentemente dalla parametrizzazione. (Sto parlando del modello OLS.) È vero che se un determinato parametro entra nel modello in modo lineare, le deviazioni standard producono migliori limiti di confidenza per quel parametro. le deviazioni standard ottenute tramite il metodo delta saranno le stesse sia che venga utilizzato per parametrizzare il modello o risolto come variabile dipendente. In questo caso, la variabile di interesse dipendente è la funzione entalpia-volume e il suo metodo delta std dev sarà lo stesso sia che si utilizzi la parametrizzazione sia la mia.
Dave Fournier,

1
@Dave sono d'accordo: i modelli sono gli stessi ma con parametri diversi. I vantaggi della formulazione OLS si estendono al fatto che gli errori normali nella risposta si traducono in una soluzione esatta per la distribuzione delle stime dei parametri , che può essere facilmente trasformata in una stima della distribuzione tridimensionale completa delle stime dei parametri originali. Sebbene ciò possa essere fatto utilizzando la parametrizzazione originale, ciò richiederebbe un lavoro più numerico. Inoltre, i vantaggi concettuali di vedere il modello originale sono solo OLS sotto mentite spoglie sono importanti. β^
whuber

3

Esiste un approccio standard per questo chiamato metodo delta. Formi l'inverso dell'assia della verosimiglianza con i tuoi quattro parametri. Esiste un parametro aggiuntivo per la varianza dei residui, ma non ha un ruolo in questi calcoli. Quindi si calcola la risposta prevista per i valori desiderati della variabile indipendente e si calcola il suo gradiente (la scrittura derivata) questi quattro parametri. Chiama l'inverso dell'Assia e il vettore gradiente . Si forma il prodotto matrice vettoriale g - g t I giog

-gtiog
Questo ti dà la varianza stimata per quella variabile dipendente. Prendi la radice quadrata per ottenere la deviazione standard stimata. quindi i limiti di confidenza sono il valore previsto + - due deviazioni standard. Questa è roba di probabilità standard. per il caso speciale di una regressione non lineare è possibile correggere i gradi di libertà. Hai 10 osservazioni e 4 parametri in modo da poter aumentare la stima della varianza nel modello moltiplicando per 10/6. Diversi pacchetti software lo faranno per te. Ho scritto il tuo modello nel modello AD in Builder modello AD, adattandolo e calcolato le variazioni (non modificate). Saranno leggermente diversi dai tuoi perché ho dovuto indovinare un po 'i valori.
                    estimate   std dev
10   pred_E      -4.8495e+01 7.5100e-03
11   pred_E      -4.8810e+01 7.9983e-03
12   pred_E      -4.9028e+01 7.5675e-03
13   pred_E      -4.9224e+01 6.4801e-03
14   pred_E      -4.9303e+01 6.8034e-03
15   pred_E      -4.9328e+01 7.1726e-03
16   pred_E      -4.9329e+01 7.0249e-03
17   pred_E      -4.9297e+01 7.1977e-03
18   pred_E      -4.9252e+01 1.1615e-02

Questo può essere fatto per qualsiasi variabile dipendente in AD Model Builder. Uno dichiara una variabile nel punto appropriato del codice in questo modo

   sdreport_number dep

e scrive il codice per valutare la variabile dipendente in questo modo

dep=sqrt(V0-cube(Bp0)/(1+2*max(V)));

Si noti che questo viene valutato per un valore della variabile indipendente 2 volte la più grande osservata nel raccordo del modello. Montare il modello e si ottiene la deviazione standard per questa variabile dipendente

19   dep          7.2535e+00 1.0980e-01

Ho modificato il programma per includere il codice per il calcolo dei limiti di confidenza per la funzione del volume entalpico Il file di codice (TPL) sembra

DATA_SECTION
 init_int nobs
 init_matrix data(1,nobs,1,2)
 vector E
 vector V
 number Vmean
LOC_CALCS
 E=column(data,2);
 V=column(data,1);
 Vmean=mean(V);

PARAMETER_SECTION
 init_number E0
 init_number log_V0_coff(2)
 init_number log_B0(3)
 init_number log_Bp0(3)
 init_bounded_number a(.9,1.1)
 sdreport_number V0
 sdreport_number B0
 sdreport_number Bp0
 sdreport_vector pred_E(1,nobs)
 sdreport_vector P(1,nobs)
 sdreport_vector H(1,nobs)
 sdreport_number dep
 objective_function_value f
PROCEDURE_SECTION
  V0=exp(log_V0_coff)*Vmean;
  B0=exp(log_B0);
  Bp0=exp(log_Bp0);
  if (current_phase()<4)
  f+=square(log_V0_coff) +square(log_B0);

  dvar_vector sv=pow(V0/V,0.66666667);
  pred_E=E0 + 9*V0*B0*(cube(sv-1.0)*Bp0
    + elem_prod(square(sv-1.0),(6-4*sv)));

  dvar_vector r2=square(E-pred_E);
  dvariable vhat=sum(r2)/nobs;
  dvariable v=a*vhat;
  f=0.5*nobs*log(v)+sum(r2)/(2.0*v);

  // code to calculate the  enthalpy-volume function
  double delta=1.e-4;
  dvar_vector svp=pow(V0/(V+delta),0.66666667);
  dvar_vector svm=pow(V0/(V-delta),0.66666667);
  P = -((9*V0*B0*(cube(svp-1.0)*Bp0
      + elem_prod(square(svp-1.0),(6-4*svp))))
      -(9*V0*B0*(cube(svm-1.0)*Bp0
      + elem_prod(square(svm-1.0),(6-4*svm)))))/(2.0*delta);
  H=E+elem_prod(P,V);

dep=sqrt(V0-cube(Bp0)/(1+2*max(V)));

Quindi ho modificato il modello per ottenere gli sviluppatori standard per le stime di H.

29   H           -3.9550e+01 5.9163e-01
30   H           -4.1554e+01 2.8707e-01
31   H           -4.3844e+01 1.2333e-01
32   H           -4.5212e+01 1.5011e-01
33   H           -4.6859e+01 1.5434e-01
34   H           -4.7813e+01 1.2679e-01
35   H           -4.8808e+01 1.1036e-01
36   H           -4.9626e+01 1.8374e-01
37   H           -5.0186e+01 2.8421e-01
38   H           -5.0806e+01 4.3179e-01

Questi sono calcolati per i tuoi valori V osservati, ma potrebbero essere facilmente calcolati per qualsiasi valore di V.

È stato sottolineato che questo è in realtà un modello lineare per il quale esiste un semplice codice R per eseguire la stima dei parametri tramite OLS. Questo è molto interessante soprattutto per gli utenti ingenui. Tuttavia, poiché il lavoro di Huber oltre trenta anni fa sappiamo o dovremmo sapere che probabilmente si dovrebbe quasi sempre sostituire OLS con un'alternativa moderatamente solida. La ragione per cui ciò non viene fatto di routine credo che i metodi robusti siano intrinsecamente non lineari. Da questo punto di vista i semplici metodi OLS accattivanti in R sono più una trappola, piuttosto che una caratteristica. Un vantaggio dell'approccio AD Model Builder è il supporto integrato per la modellazione non lineare. Per modificare il codice dei minimi quadrati in una miscela normale robusta, è necessario modificare solo una riga del codice. La linea

    f=0.5*nobs*log(v)+sum(r2)/(2.0*v);

è cambiato in

f=0.5*nobs*log(v)
  -sum(log(0.95*exp(-0.5*r2/v) + 0.05/3.0*exp(-0.5*r2/(9.0*v))));

La quantità di sovradispersione nei modelli è misurata dal parametro a. Se è uguale a 1,0, la varianza è la stessa del modello normale. Se c'è un'inflazione della varianza da parte dei valori anomali, ci aspettiamo che a sia inferiore a 1,0. Per questi dati la stima di a è di circa 0,23, quindi la varianza è di circa 1/4 della varianza per il modello normale. L'interpretazione è che i valori anomali hanno aumentato la stima della varianza di un fattore di circa 4. L'effetto di ciò è aumentare la dimensione dei limiti di confidenza per i parametri per il modello OLS. Ciò rappresenta una perdita di efficienza. Per il modello di miscela normale sono le deviazioni standard stimate per la funzione volume entalpico

 29   H           -3.9777e+01 3.3845e-01
 30   H           -4.1566e+01 1.6179e-01
 31   H           -4.3688e+01 7.6799e-02
 32   H           -4.5018e+01 9.4855e-02
 33   H           -4.6684e+01 9.5829e-02
 34   H           -4.7688e+01 7.7409e-02
 35   H           -4.8772e+01 6.2781e-02
 36   H           -4.9702e+01 1.0411e-01
 37   H           -5.0362e+01 1.6380e-01
 38   H           -5.1114e+01 2.5164e-01

Si vede che ci sono piccoli cambiamenti nelle stime puntuali, mentre i limiti di confidenza sono stati ridotti a circa il 60% di quelli prodotti da OLS.

Il punto principale che voglio sottolineare è che tutti i calcoli modificati si verificano automaticamente quando si cambia una riga di codice nel file TPL.


2
Per il beneficio di @ timo, vorrei notare che il "metodo delta" è essenzialmente la stessa identica procedura della "propagazione dell'incertezza" con cui ha familiarità e che è comunemente insegnata agli scienziati - almeno, loro sono la stessa procedura quando quest'ultima viene eseguita correttamente. Un avvertimento è che la formula pubblicata nella domanda ignora le correlazioni tra i valori stimati dei parametri. Ignorare le correlazioni equivale a considerare solo gli elementi diagonali di nel metodo delta. io
Jwimberley,

1
Anche per @thyme, la propagazione delle incertezze / il metodo delta produce solo l'incertezza in . Inoltre, vi è una tendenza / variazione dovuta al rumore. Suppongo che tu stia facendo delle previsioni sui campioni fisici, la cui energia / entalpia / altre quantità termodinamiche non hanno lo stesso rumore che hanno nel tuo software di simulazione, ma in entrambi i casi questo aggiunge un'ulteriore fonte di varianza la varianza in o dovuta all'incertezza derivante dall'adattamento. E(E|V)E(E|V)E(H|V)
Jwimberley,

1
@jwimberley, in pratica stai dicendo che dave fourier ha dato la formula per l'intervallo di confidenza della media (condizionale), mentre il timo potrebbe essere interessato all'intervallo di predizione per una nuova osservazione. È facile calcolare quest'ultimo per OLS. Come si calcola in questo caso?
DeltaIV,

1
@DeltaIV In questo caso sarebbe comunque facile - se il modello dei minimi quadrati non lineari è corretto, i residui dell'adattamento vengono distribuiti come . Pertanto, la varianza aggiuntiva nell'intervallo di previsione è la varianza dei residui di adattamento. Questo è legato all'idea nel post-script della risposta (che non è dipendente perché il modello di adattamento non è eteroschedastico). Tuttavia, cosa ancora più importante, in forma deriva da limiti computazionali, mentre nel mondo proviene da fluttuazioni termodinamiche, che probabilmente non sono comparabili. E - E ε V ε εE=f(V)+εEE^ϵVϵε
jwimberley,

1
@jwimberley Ho mostrato i limiti di confidenza per i valori previsti corrispondenti ai valori V osservati semplicemente perché erano disponibili. Ho modificato la mia risposta per mostrare come ottenere i limiti di confidenza per qualsiasi variabile dipendente.
Dave Fournier,

0

La convalida incrociata è un modo semplice per stimare l' affidabilità della curva: https://en.wikipedia.org/wiki/Cross-validation_(statistics)

La propagazione dell'incertezza con i differenziali parziali è eccezionale se conosci veramente e . Tuttavia, il programma in uso fornisce solo errori di adattamento (?). Saranno troppo ottimisti (non irrealisticamente piccoli). Δ B ΔE0,ΔV0,ΔB0ΔB'

È possibile calcolare un errore di convalida di 1 volta lasciando uno dei punti lontano dal raccordo e utilizzando la curva adattata per prevedere il valore del punto che è stato lasciato. Ripetere questo per tutti i punti in modo che ciascuno venga lasciato una volta. Quindi, calcolare l'errore di convalida della curva finale (curva dotata di tutti i punti) come media degli errori di previsione.

Questo ti dirà solo quanto è sensibile il tuo modello per ogni nuovo punto dati. Ad esempio, non ti dirà quanto sia impreciso il tuo modello energetico. Tuttavia, questo sarà un errore molto più realistico stimando un semplice errore di adattamento.

Inoltre, è possibile tracciare gli errori di previsione in funzione del volume, se lo si desidera.

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.