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