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
thingSpeakRead
|iddata
(System Identification Toolbox) |detrend
(System Identification Toolbox) |ar
(System Identification Toolbox) |getpvec
(System Identification Toolbox)