Kas on sõltuv muutuja?
Exceli trendijoon pärineb sõltuv muutuja "lat" regressioonist sõltumatu muutuja "lon". Selle, mida te nimetate "terve mõistuse jooneks", saab siis, kui te ei määra sõltuv muutujat ja kohtlete nii laius- kui ka pikkuskraadi võrdselt. Viimase saab PCA rakendades. Eelkõige on see nende muutujate kovariantsimaatriksi üks omavektoreid. Võite mõelda sellest kui joonest, mis vähendab lühimat kaugust igast antud $ (x_i, y_i) $ punktist sirgeni, st joonistate sirgega risti ja minimeerige iga vaatluse summa.
R-s saate seda teha järgmiselt.
> para <- read.csv ("para.csv")
>i süžee (para)
>
> # käivitage PCA
> pZ = prcomp (para, auaste = 1)
> # pilk 1. arvutile
> pZ $ pööramine
PC1
lon 0,09504313
lat 0,99547316
>
> colMeans (para) # PCA oli tsentreeritud
lon lat
-0,7129371 53,9368720
> # andmete taastamine 1. arvutist
> pc1 = t (pZ $ pöörlemine% *% t (pZ $ x))
> # keskus ja saade
> read (pc1 + t (t (rep (1123)))% *% c)
Excelis saadud trendijoon on sama mõistlik kui PCA-st pärinev vektor, kui mõistate, et Exceli regressioonis pole muutujad võrdsed. Siin minimeerite vertikaal kauguse $ y_i $ kuni $ y (x_i) $ , kus y-telg on laiuskraad ja x-telg on pikkuskraad.
Kas soovite muutujaid võrdselt käsitleda või mitte, sõltub eesmärgist. See pole andmete omane kvaliteet. Andmete analüüsimiseks peate valima õige statistilise tööriista, sel juhul valige regressiooni ja PCA vahel.
Vastus küsimusele, mida ei esitatud
Miks siis teie puhul ei tundu (regressiooni) trendijoon Excelis teie juhtumi jaoks sobivat tööriista? Põhjuseks on see, et trendijoon on vastus küsimusele, mida ei esitatud. Siit miks.
Exceli regressioon proovib hinnata rea parameetreid $ lat = a + b \ korda lon $ . Nii et esimene probleem on see, et laiuskraad ei ole rangelt võttes isegi pikkuskraadi funktsioon (vt postituse lõpus olevat märkust) ja see pole isegi peamine küsimus. Tõeline häda on see, et sind ei huvita isegi paraglideri asukoht, vaid tuul.
Kujutage ette, et tuult polnud. Paraplaan teeks sama ringi ikka ja jälle. Milline oleks trendijoon? Ilmselt oleks see lame horisontaaljoon, selle kalle oleks null, kuid see ei tähenda veel, et tuul puhuks horisontaalsuunas!
Siin on simuleeritud joonis, kui piki y-telge puhub tugev tuul, samal ajal kui paraglider teeb täiuslikke ringe. Näete, kuidas lineaarne regressioon $ y \ sim x $ annab mõttetu tulemuse, horisontaalse trendijoone. Tegelikult on see isegi veidi negatiivne, kuid mitte märkimisväärne. Tuule suund on näidatud punase joonega:
Simulatsiooni R-kood:
t = 1: 123
a = 1 # 1
b = 0 # 1/10
y = 10 * patt (t) + a * t
x = 10 * cos (t) + b * t
joonis (x, y, xlim = c (-60,60))
xp = -60: 60
read (b * t, a * t, col = 'punane')
mudel = lm (y ~ x)
read (xp, xp * model $ koefitsiendid [2] + mudeli $ koefitsiendid [1])
Seega pole tuule suund selgelt trendijoonega joondatud. Need on muidugi seotud, kuid mitterivaalsel viisil. Seega minu väide, et Exceli trendijoon on vastus mõnele küsimusele, kuid mitte sellele, mille te esitasite.
Miks PCA?
Nagu märkisite, on paraglideri liikumisel vähemalt kaks komponenti: tuulega triiv ja paraplaaniga juhitav ümmargune liikumine. See on selgelt nähtav, kui ühendate oma maatüki punktid:
Ühelt poolt on ümmargune liikumine teie jaoks tõeliselt häiriv: teid huvitab tuul. Ehkki teisest küljest ei jälgi te tuule kiirust, vaid ainult paragliderit. Niisiis, teie eesmärk on järeldada vaadeldava paraglideri asukoha lugemisest jälgimatut tuult. See on täpselt olukord, kus sellised tegurid nagu tegurianalüüs ja PCA võivad olla kasulikud.
PCA eesmärk on eraldada mõned tegurid, mis määravad mitu väljundit, analüüsides väljundite korrelatsioone. See on efektiivne, kui väljund on seotud teguritega lineaarselt, mis juhtub ka teie andmetes: tuule triiv lisab lihtsalt ümmarguse liikumise koordinaate, seetõttu töötab siin PCA.
PCA seadistamine
Niisiis tegime kindlaks, et PCA-l peaks siin olema võimalus, kuid kuidas me selle tegelikult püstitame? Alustame kolmanda muutuja, aja lisamisega. Määrame igale 123 vaatlusele aja 1 kuni 123, eeldades konstantset proovivõtusagedust. 3D-graafik näeb andmete järgi välja, paljastades nende spiraalse struktuuri:
Järgmine graafik näitab paraglideri kujuteldavat pöörlemiskeskkonda pruunide ringidena. Näete, kuidas see triivib tuulega lat-lon lennukil, samal ajal kui selle ümber tiirutab sinise punktiga näidatud paraglider. Aeg on vertikaalteljel. Ühendasin pöörlemiskeskme paraplaani vastava asukohaga, näidates ainult kahte esimest ringi.
Vastav R-kood:
teek (plotly)
para <- read.csv ("para.csv")
n = 24
para $ t = 1: 123 # aja parameetri lisamine
# käivitage PCA
pZ3 = prcomp (para)
c3 = colMeans (para) # PCA oli tsentreeritud
# vaata veergudes olevaid arvuteid
pZ3 $ pöörlemine
# saada kujuteldav pöörlemiskeskus
pc31 = t (pZ3 $ rotation [, 1]% *% t (pZ3 $ x [, 1]))
silm = pc31 + t (t (kordus (1,123)))% *% c3
eyedata = data.frame (silm)
p = plot_ly (x = para [1: n, 1], y = para [1: n, 2], z = para [1: n, 3], mode = "read + markerid", type = "scatter3d" )% >%
küljendus (showlegend = FALSE, stseen = list (xaxis = list (pealkiri = 'lat'), yaxis = list (pealkiri = 'lon'), zaxis = list (pealkiri = 't')))% >%
add_trace (x = silmadata [1: n, 1], y = silmadata [1: n, 2], z = silmadata [1: n, 3], režiim = "markerid", tüüp = "hajumine3d")
jaoks (i ühes: n) {
p = add_trace (p, x = c (eyedata [i, 1], para [i, 1]), y = c (eyedata [i, 2], para [i, 2]), z = c (eyedata [ i, 3], lõige [i, 3]), color = "must", mode = "read", type = "scatter3d")
}
alamkrunt (p)
Paraplaani pöörlemiskeskme triivi põhjustab peamiselt tuul ning triivi tee ja kiirus on korrelatsioonis tuule suuna ja kiirusega, mis on jälgimatud huvitavad muutujad. Nii näeb triiv välja, kui seda prognoosida piklikule tasapinnale:
PCA regressioon
Nii jõudsime varem kindlaks, et regulaarne lineaarne regressioon ei tundu siin eriti hästi töötavat. Mõistsime ka, miks: kuna see ei kajasta põhiprotsessi, kuna paraglideri liikumine on väga mittelineaarne. See on ümmarguse liikumise ja lineaarse triivi kombinatsioon. Samuti arutasime, et selles olukorras võib tegurite analüüs olla kasulik. Siin on toodud ülevaade ühest võimalikust lähenemisviisist nende andmete modelleerimiseks: PCA regressioon. Aga rusikas, ma näitan teile PCA regressiooni fitted kõverat:
See on saadud järgmiselt. Käivitage PCA andmekogumil, millel on lisaveerg t = 1: 123, nagu varem arutletud. Saate kolm peamist komponenti. Esimene neist on lihtsalt t. Teine vastab lon veergule ja kolmas lat veergule.
Sobitan kaks viimast põhikomponenti muutujale kujul $ a \ sin (\ omega t + \ varphi) $ , kus $ \ omega, \ varphi $ eraldatakse komponentide spektraalanalüüsist. Neil on juhtumisi sama sagedus, kuid erinevad faasid, mis pole ümmargust liikumist arvestades üllatav.
see on kõik. Sobitatud väärtuste saamiseks taastatakse andmed sobivatest komponentidest, ühendades PCA pöörlemismaatriksi eeldatud põhikomponentidesse. Minu ülaltoodud R-kood näitab protseduuri osi ja ülejäänud saate hõlpsasti aru saada.
Järeldus
On huvitav näha, kui võimas on PCA ja muud lihtsad tööriistad, kui on tegemist füüsiliste nähtustega, mille aluseks olevad protsessid on stabiilsed ja sisendid muutuvad väljunditeks lineaarsete (või lineariseeritud) suhete kaudu. Nii et meie puhul on ümmargune liikumine väga mittelineaarne, kuid me lineariseerisime selle hõlpsalt, kasutades siinus / koosinus funktsioone aja t parameetril. Minu süžeed toodeti vaid mõne rea R-koodiga, nagu nägite.
Regressioonimudel peaks peegeldama alusprotsessi, siis võite ainult teie eeldada, et selle parameetrid on olulised. Kui see on tuules triiviv paraglider, siis peidab algne küsimuses sarnane lihtne hajutussüstal protsessi ajastruktuuri.
Ka Exceli regressioon oli ristlõikeanalüüs, mille puhul lineaarne regressioon töötab kõige paremini, samas kui teie andmed on aegridade protsess, kus vaatlused on järjestatud ajas. Siin tuleb rakendada aegridade analüüsi ja see tehti PCA regressioonis.
Märkused funktsiooni kohta
Kuna paraglider teeb ringe, on ühel laiuskraadil mitu laiuskraadi.Matemaatikas kaardistab funktsioon $ y = f (x) $ väärtuse $ x $ ühele väärtusele $ y $ .See on suhe paljudele ühele, mis tähendab, et mitu $ x $ võivad vastata $ y $ , kuidmitte mitu $ y $ vastab ühele $ x $ .Seetõttu pole $ lat = f (lon) $ rangelt öeldes funktsioon.