Main Content

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l’originale in inglese.

Adattare un modello di autoregressione ai dati sulla profondità delle maree

Questo esempio mostra come adattare un modello di autoregressione (AR) per i dati nel tuo canale ThingSpeak™ e calcolare i parametri di regressione insieme alle relative incertezze. I modelli di autoregressione vengono utilizzati per rappresentare un processo in natura dipendente dal tempo.

Leggi i dati dal mareografo in tempo reale di Ockway Bay

Il canale ThingSpeak 50289 contiene dati sulla profondità delle maree a Ockway Bay. I dati vengono raccolti una volta ogni 5 minuti. Il campo 1 del canale contiene i dati sulla profondità delle maree.

% Read the data using the |thingSpeakRead| function from channel 50289 on a particular day, for example, July 01, 2016.
startDate = datetime('July 1, 2016 12:01:00 AM');
endDate = datetime('July 2, 2016 12:01:00 AM');
dateRange = startDate:endDate;
[data,timestamps] = thingSpeakRead(50289,'DateRange',dateRange,'Fields',1);

Adattare un modello AR ai dati

Utilizzare la funzione iddata per creare un oggetto iddata dei dati sulla profondità delle maree. Utilizzare detrend per garantire che i dati abbiano una media pari a zero.

sampleTime = 5;
IDdata = iddata(data,[],sampleTime,'OutputName',{'Tidal Depth'},'TimeUnit','minutes')
IDdata = detrend(IDdata,0);
IDdata =

Time domain data set with 288 samples.
Sample time: 5 minutes                 
                                       
Outputs           Unit (if specified)  
   Tidal Depth                         
                                       

Adatta il modello ai dati

Poiché la profondità della marea varia con il tempo, utilizzare la funzione ar per adattare ai dati un modello autoregressivo a tempo discreto.

modelOrder = 8;
sys = ar(IDdata,modelOrder)
sys =
Discrete-time AR model: A(z)y(t) = e(t)                                   
                                                                          
  A(z) = 1 - 1.154 z^-1 - 0.1668 z^-2 + 0.2144 z^-3 + 0.2974 z^-4         
                   - 0.4227 z^-5 + 0.1509 z^-6 - 0.1612 z^-7 + 0.2491 z^-8
                                                                          
Sample time: 5 minutes
  
Parameterization:
   Polynomial orders:   na=8
   Number of free coefficients: 8
   Use "polydata", "getpvec", "getcov" for parameters and their uncertainties.

Status:                                                    
Estimated using AR ('fb/now') on time domain data "IDdata".
Fit to estimation data: 98.5%                              
FPE: 0.04741, MSE: 0.04485                                 

Mostra parametri

Utilizzare la funzione getpvec per mostrare i parametri stimati insieme alle loro incertezze.

[Parameters,Uncertainties] = getpvec(sys)
Parameters =

   -1.1543
   -0.1668
    0.2144
    0.2974
   -0.4227
    0.1509
   -0.1612
    0.2491


Uncertainties =

    0.0580
    0.0918
    0.0932
    0.0918
    0.0921
    0.0970
    0.0962
    0.0647

L'output mostra i parametri del modello AR stimati e il valore di deviazione standard dei parametri stimati.

Scrivi i parametri su ThingSpeak

Utilizza la funzione thingSpeakWrite per scrivere la matrice di valori in ThingSpeak, con un valore per campo. Trasporre i dati in modo che siano 8 x 1. Cambia channelID e writeAPIKey per inviare dati al tuo canale.

channelID=17504;
writeAPIKey='23ZLGOBBU9TWHG2H';
response = thingSpeakWrite(channelID,'Values',Parameters','WriteKey',writeAPIKey)
response = 

  struct with fields:

         Field1: '-1.154266029802091'
         Field2: '-0.1668388400729965'
         Field3: '0.2143807521019717'
         Field4: '0.2973816840220466'
         Field5: '-0.4226981725238166'
         Field6: '0.1509427726183032'
         Field7: '-0.1612303290788889'
         Field8: '0.2490548535561231'
       Latitude: []
      Longitude: []
      ChannelID: 17504
        Created: 10-Jan-2019 15:10:41
    LastEntryID: 20736
       Altitude: []

Vedi anche

Funzioni