Main Content

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

Passen Sie ein Autoregressionsmodell an die Gezeitentiefendaten an

Dieses Beispiel zeigt, wie Sie ein Autoregressionsmodell (AR) für Daten in Ihrem ThingSpeak™ -Kanal anpassen und die Regressionsparameter zusammen mit ihren Unsicherheiten berechnen. Autoregressionsmodelle werden verwendet, um einen zeitabhängigen Prozess in der Natur darzustellen.

Lesen Sie Daten vom Ockway Bay Echtzeit-Gezeitenmesser

Der ThingSpeak Kanal 50289 enthält Daten zur Gezeitentiefe in der Ockway Bay. Die Daten werden alle 5 Minuten erfasst. Feld 1 des Kanals enthält Gezeitentiefendaten.

% 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);

Passen Sie ein AR-Modell an die Daten an

Verwenden Sie die Funktion iddata , um ein iddata-Objekt der Gezeitentiefendaten zu erstellen. Verwenden Sie detrend , um sicherzustellen, dass die Daten einen Mittelwert von Null haben.

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                         
                                       

Modell an Daten anpassen

Da die Gezeitentiefe mit der Zeit variiert, verwenden Sie die Funktion ar , um ein zeitdiskretes autoregressives Modell an die Daten anzupassen.

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                                 

Parameter anzeigen

Verwenden Sie die Funktion getpvec , um die geschätzten Parameter zusammen mit ihren Unsicherheiten anzuzeigen.

[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

Die Ausgabe zeigt die geschätzten AR-Modellparameter und den einen Standardabweichungswert der geschätzten Parameter.

Parameter in ThingSpeak schreiben

Verwenden Sie die Funktion thingSpeakWrite , um das Wertearray mit einem Wert pro Feld in ThingSpeak zu schreiben. Transponieren Sie die Daten auf 8 x 1. Ändern Sie channelID und writeAPIKey , um Daten an Ihren Kanal zu senden.

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: []

Siehe auch

Funktionen