Adattare un modello di autoregressione ai dati di profondità delle maree
Questo esempio mostra come adattare un modello di autoregressione (AR) ai dati nel canale ThingSpeak ™ e calcolare i parametri di regressione insieme alle relative incertezze. I modelli di autoregressione vengono utilizzati per rappresentare un processo dipendente dal tempo in natura.
Leggi i dati dal mareografo in tempo reale di Ockway Bay
Il canale 50289 di ThingSpeak contiene dati sulla profondità delle maree a Ockway Bay. I dati vengono raccolti 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 nel tempo, utilizzare la funzione ar per adattare un modello autoregressivo a tempo discreto ai dati.
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 visualizzare i parametri stimati insieme alle relative 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 stimati del modello AR e il valore della deviazione standard dei parametri stimati.
Scrivi parametri su ThingSpeak
Utilizzare la funzione thingSpeakWrite per scrivere l'array di valori in ThingSpeak, con un valore per campo. Trasporre i dati in modo che siano 8 x 1. Modifica 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)