Main Content

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

Ajuster un modèle d'autorégression aux données de profondeur de marée

Cet exemple montre comment ajuster un modèle d'autorégression (AR) pour les données de votre canal ThingSpeak ™ et calculer les paramètres de régression avec leurs incertitudes. Les modèles d'autorégression sont utilisés pour représenter un processus dépendant du temps dans la nature.

Lire les données du marégraphe en temps réel d'Ockway Bay

Le canal ThingSpeak 50289 contient des données sur la profondeur des marées à Ockway Bay. Les données sont collectées une fois toutes les 5 minutes. Le champ 1 du canal contient des données sur la profondeur des marées.

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

Ajuster un modèle AR aux données

Utilisez la fonction iddata pour créer un objet iddata des données de profondeur de marée. Utilisez detrend pour vous assurer que les données ont une moyenne nulle.

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                         
                                       

Ajuster le modèle aux données

Étant donné que la profondeur de marée varie avec le temps, utilisez la fonction ar pour ajuster un modèle autorégressif en temps discret aux données.

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                                 

Afficher les paramètres

Utilisez la fonction getpvec pour afficher les paramètres estimés ainsi que leurs incertitudes.

[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

La sortie affiche les paramètres estimés du modèle AR et la valeur d'écart type des paramètres estimés.

Écrire des paramètres dans ThingSpeak

Utilisez la fonction thingSpeakWrite pour écrire le tableau de valeurs dans ThingSpeak, avec une valeur par champ. Transposez les données à 8 x 1. Changez le channelID et le writeAPIKey pour envoyer des données à votre canal.

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

Voir aussi

Fonctions