C'è una variabile dipendente?
La linea di tendenza in Excel deriva dalla regressione della variabile dipendente "lat" sulla variabile indipendente "lon". La cosiddetta "linea di senso comune" può essere ottenuta quando non si designano variabili dipendenti e si trattano sia la latitudine che la longitudine allo stesso modo. Quest'ultimo può essere ottenuto applicando PCA . In particolare, è uno dei vettori eigen della matrice di covarianza di queste variabili. Puoi pensarlo come una linea che minimizza la distanza più breve da qualsiasi dato punto a una linea stessa, cioè disegna una perpendicolare a una linea e minimizzi la somma di quelli per ogni osservazione.(xi,yi)
Ecco come potresti farlo in R:
> para <- read.csv("para.csv")
> plot(para)
>
> # run PCA
> pZ=prcomp(para,rank.=1)
> # look at 1st PC
> pZ$rotation
PC1
lon 0.09504313
lat 0.99547316
>
> colMeans(para) # PCA was centered
lon lat
-0.7129371 53.9368720
> # recover the data from 1st PC
> pc1=t(pZ$rotation %*% t(pZ$x) )
> # center and show
> lines(pc1 + t(t(rep(1,123))) %*% c)
La linea di tendenza che hai ottenuto da Excel è un senso comune come il vettore di automa da PCA quando capisci che nella regressione di Excel le variabili non sono uguali. Qui stai minimizzando una distanza verticale da a , dove l'asse y è latitudine e l'asse x è una longitudine. y ( x i )yiy(xi)
Se vuoi trattare le variabili allo stesso modo o meno dipende dall'obiettivo. Non è la qualità intrinseca dei dati. Devi scegliere lo strumento statistico giusto per analizzare i dati, in questo caso scegli tra la regressione e la PCA.
Una risposta a una domanda che non è stata posta
Quindi, perché nel tuo caso una linea di tendenza (regressione) in Excel non sembra essere uno strumento adatto al tuo caso? Il motivo è che la linea di tendenza è una risposta a una domanda che non è stata posta. Ecco perché.
La regressione di Excel sta provando a stimare i parametri di una riga . Quindi, il primo problema è che la latitudine non è nemmeno una funzione di una longitudine, a rigor di termini (vedi la nota alla fine del post), e non è nemmeno il problema principale. Il vero problema è che non sei nemmeno interessato alla posizione del parapendio, sei interessato al vento.lat=a+b×lon
Immagina che non ci fosse vento. Un parapendio farebbe lo stesso cerchio ancora e ancora. Quale sarebbe la linea di tendenza? Ovviamente, sarebbe una linea orizzontale piatta, la sua pendenza sarebbe zero, ma ciò non significa che il vento soffi in direzione orizzontale!
Ecco una trama simulata per quando c'è un forte vento lungo l'asse y, mentre un parapendio fa cerchi perfetti. Puoi vedere come la regressione lineare produce un risultato senza senso, una linea di tendenza orizzontale. In realtà, è anche leggermente negativo, ma non significativo. La direzione del vento è indicata da una linea rossa:y∼x
Codice R per la simulazione:
t=1:123
a=1 #1
b=0 #1/10
y=10*sin(t)+a*t
x=10*cos(t)+b*t
plot(x,y,xlim=c(-60,60))
xp=-60:60
lines(b*t,a*t,col='red')
model=lm(y~x)
lines(xp,xp*model$coefficients[2]+model$coefficients[1])
Quindi, la direzione del vento chiaramente non è affatto allineata con la linea di tendenza. Sono collegati, ovviamente, ma in modo non banale. Quindi, la mia affermazione che la linea di tendenza di Excel è una risposta ad alcune domande, ma non quella che hai posto.
Perché PCA?
Come hai notato, ci sono almeno due componenti del movimento di un parapendio: la deriva con un vento e un movimento circolare controllato da un parapendio. Questo si vede chiaramente quando si collegano i punti sulla trama:
Da un lato, il movimento circolare è davvero una seccatura per te: sei interessato al vento. D'altra parte, non si osserva la velocità del vento, si osserva solo il parapendio. Quindi, il tuo obiettivo è dedurre il vento inosservabile dalla lettura della posizione del parapendio osservabile. Questa è esattamente la situazione in cui strumenti come l'analisi dei fattori e la PCA possono essere utili.
L'obiettivo del PCA è di isolare alcuni fattori che determinano i risultati multipli analizzando le correlazioni nei risultati. È efficace quando l'output è collegato in modo lineare a fattori, che è il caso nei tuoi dati: la deriva del vento si aggiunge semplicemente alle coordinate del movimento circolare, ecco perché PCA sta lavorando qui.
Configurazione PCA
Quindi, abbiamo stabilito che PCA dovrebbe avere una possibilità qui, ma come lo configureremo effettivamente? Cominciamo con l'aggiunta di una terza variabile, il tempo. Assegneremo il tempo da 1 a 123 a ciascuna 123 osservazione, assumendo la frequenza di campionamento costante. Ecco come appare la trama 3D dei dati, rivelando la sua struttura a spirale:
La trama successiva mostra il centro immaginario di rotazione di un parapendio come cerchi marroni. Puoi vedere come va alla deriva sull'aereo lat-lon con il vento, mentre il parapendio mostrato con un punto blu lo circonda. Il tempo è sull'asse verticale. Ho collegato il centro di rotazione a una posizione corrispondente di un parapendio che mostra solo i primi due cerchi.
Il codice R corrispondente:
library(plotly)
para <- read.csv("C:/Users/akuketay/Downloads/para.csv")
n=24
para$t=1:123 # add time parameter
# run PCA
pZ3=prcomp(para)
c3=colMeans(para) # PCA was centered
# look at PCs in columns
pZ3$rotation
# get the imaginary center of rotation
pc31=t(pZ3$rotation[,1] %*% t(pZ3$x[,1]) )
eye = pc31 + t(t(rep(1,123))) %*% c3
eyedata = data.frame(eye)
p = plot_ly(x=para[1:n,1],y=para[1:n,2],z=para[1:n,3],mode="lines+markers",type="scatter3d") %>%
layout(showlegend=FALSE,scene=list(xaxis = list(title = 'lat'),yaxis = list(title = 'lon'),zaxis = list(title = 't'))) %>%
add_trace(x=eyedata[1:n,1],y=eyedata[1:n,2],z=eyedata[1:n,3],mode="markers",type="scatter3d")
for( i in 1: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],para[i,3]),color="black",mode="lines",type="scatter3d")
}
subplot(p)
La deriva del centro della rotazione del parapendio è causata principalmente dal vento, e il percorso e la velocità della deriva sono correlati con la direzione e la velocità del vento, variabili non osservabili di interesse. Ecco come appare la deriva quando proiettata sul piano lat-lon:
Regressione PCA
Quindi, in precedenza abbiamo stabilito che la regressione lineare regolare non sembra funzionare molto bene qui. Abbiamo anche capito perché: perché non riflette il processo sottostante, perché il movimento del parapendio è altamente non lineare. È una combinazione di movimento circolare e una deriva lineare. Abbiamo anche discusso del fatto che in questa situazione l'analisi dei fattori potrebbe essere utile. Ecco uno schema di un possibile approccio alla modellazione di questi dati: regressione PCA . Ma pugno ti mostrerò la curva adattata di regressione PCA :
Questo è stato ottenuto come segue. Eseguire PCA sul set di dati che ha una colonna aggiuntiva t = 1: 123, come discusso in precedenza. Ottieni tre componenti principali. Il primo è semplicemente t. Il secondo corrisponde alla colonna lon e il terzo alla colonna lat.
Adatto questi ultimi due componenti principali a una variabile della forma , dove vengono estratti dall'analisi spettrale dei componenti. Capita di avere la stessa frequenza ma fasi diverse, il che non sorprende dato il movimento circolare.ω , φasin(ωt+φ)ω,φ
Questo è tutto. Per ottenere i valori adattati, recuperare i dati dai componenti montati collegando la trasposizione della matrice di rotazione PCA nei componenti principali previsti. Il mio codice R sopra mostra parti della procedura e il resto che puoi capire facilmente.
Conclusione
È interessante vedere quanto è potente la PCA e altri semplici strumenti quando si tratta di fenomeni fisici in cui i processi sottostanti sono stabili e gli input si traducono in output tramite relazioni lineari (o linearizzate). Quindi nel nostro caso il movimento circolare è molto non lineare ma l'abbiamo linearizzato facilmente usando le funzioni seno / coseno su un parametro tempo t. I miei grafici sono stati prodotti con poche righe di codice R come hai visto.
Il modello di regressione dovrebbe riflettere il processo sottostante, quindi solo tu puoi aspettarti che i suoi parametri siano significativi. Se questo è un parapendio alla deriva nel vento, un semplice diagramma a dispersione come nella domanda originale nasconderà la struttura temporale del processo.
Anche la regressione di Excel è stata un'analisi trasversale, per la quale la regressione lineare funziona meglio, mentre i dati sono un processo di serie temporali, in cui le osservazioni sono ordinate nel tempo. L'analisi delle serie temporali deve essere applicata qui ed è stata eseguita nella regressione della PCA.
Note su una funzione
Dal momento che un parapendio fa cerchi, ci saranno più latitudini corrispondenti a una singola longitudine. In matematica una funzione mappa un valore su un singolo valore . È una relazione molti-a-uno, il che significa che più possono corrispondere a , ma non più corrispondono a una singola . Ecco perché non è una funzione, a rigor di termini.x y x y y x l a t = f ( l o n )y=f(x)xyxyyxlat=f(lon)