Gibt es eine abhängige Variable?
Die Trendlinie in Excel ergibt sich aus der Regression der abhängigen Variablen "lat" auf die unabhängige Variable "lon". Was Sie als "Common-Sense-Linie" bezeichnen, erhalten Sie, wenn Sie keine abhängige Variable festlegen und sowohl den Breitengrad als auch den Längengrad gleich behandeln. Letzteres kann durch Anwenden von PCA erhalten werden . Insbesondere ist es einer der Eigenvektoren der Kovarianzmatrix dieser Variablen. Sie können sich das als eine Linie vorstellen, die den kürzesten Abstand von einem gegebenen Punkt zu einer Linie selbst minimiert, dh Sie zeichnen eine Senkrechte zu einer Linie und minimieren die Summe dieser für jede Beobachtung.( xich, yich)
Hier ist, wie Sie es in R tun könnten:
> 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)
yichy( xich)
Ob Sie die Variablen gleich behandeln möchten oder nicht, hängt vom Ziel ab. Es ist nicht die inhärente Qualität der Daten. Sie müssen das richtige statistische Tool auswählen, um die Daten zu analysieren. Wählen Sie in diesem Fall zwischen Regression und PCA.
Eine Antwort auf eine Frage, die nicht gestellt wurde
Warum ist in Ihrem Fall eine (Regressions-) Trendlinie in Excel kein geeignetes Werkzeug für Ihren Fall? Der Grund ist, dass die Trendlinie eine Antwort auf eine Frage ist, die nicht gestellt wurde. Hier ist der Grund.
l a t = a + b × l o n
Stellen Sie sich vor, es wehte kein Wind. Ein Gleitschirm würde immer wieder den gleichen Kreis machen. Was wäre die Trendlinie? Offensichtlich wäre es eine flache horizontale Linie, die Steigung wäre Null, aber das bedeutet nicht, dass der Wind in horizontaler Richtung weht!
y∼ x
R-Code für die Simulation:
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])
Die Windrichtung ist also eindeutig überhaupt nicht mit der Trendlinie ausgerichtet. Sie sind natürlich miteinander verbunden, aber auf nicht triviale Weise. Daher meine Aussage, dass die Excel-Trendlinie eine Antwort auf eine Frage ist, aber nicht die, die Sie gestellt haben.
Warum PCA?
Wie Sie bemerkt haben, gibt es mindestens zwei Komponenten der Bewegung eines Gleitschirms: die Drift mit einer Wind- und Kreisbewegung, die von einem Gleitschirm gesteuert wird. Dies ist deutlich zu sehen, wenn Sie die Punkte auf Ihrem Grundstück verbinden:
Einerseits ist die kreisförmige Bewegung für Sie wirklich ein Ärgernis: Sie interessieren sich für den Wind. Auf der anderen Seite beobachten Sie nicht die Windgeschwindigkeit, sondern nur den Gleitschirm. Ihr Ziel ist es also, den unbeobachtbaren Wind aus der Positionsmessung des beobachtbaren Gleitschirms abzuleiten. Dies ist genau die Situation, in der Tools wie Faktoranalyse und PCA nützlich sein können.
Das Ziel von PCA ist es, einige Faktoren zu isolieren, die die Mehrfachausgaben bestimmen, indem die Korrelationen in den Ausgaben analysiert werden. Es ist effektiv, wenn die Ausgabe linear mit Faktoren verknüpft ist, was in Ihren Daten der Fall ist: Die Winddrift addiert sich einfach zu den Koordinaten der Kreisbewegung. Deshalb arbeitet PCA hier.
PCA-Setup
Also haben wir festgelegt, dass PCA hier eine Chance haben sollte, aber wie werden wir es tatsächlich einrichten? Beginnen wir mit dem Hinzufügen einer dritten Variablen, der Zeit. Wir werden jeder 123 Beobachtung die Zeit 1 bis 123 zuweisen, unter der Annahme, dass die Abtastfrequenz konstant ist. So sieht die 3D-Darstellung der Daten aus und zeigt die Spiralstruktur:
Das nächste Diagramm zeigt das imaginäre Drehzentrum eines Gleitschirms als braune Kreise. Sie können sehen, wie es im Lat-Lon-Flugzeug mit dem Wind treibt, während der mit einem blauen Punkt gezeigte Gleitschirm um ihn kreist. Die Zeit ist auf der vertikalen Achse. Ich verband das Drehzentrum mit einer entsprechenden Stelle eines Gleitschirms, der nur die ersten beiden Kreise zeigte.
Der entsprechende R-Code:
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)
Die Drift des Rotationszentrums des Gleitschirms wird hauptsächlich durch den Wind verursacht, und der Weg und die Geschwindigkeit der Drift korrelieren mit der Richtung und der Geschwindigkeit des Windes, nicht beobachtbare interessierende Variablen. So sieht die Drift aus, wenn sie auf das Lat-Lon-Flugzeug projiziert wird:
PCA-Regression
Also haben wir früher festgestellt, dass die reguläre lineare Regression hier nicht sehr gut zu funktionieren scheint. Wir haben auch herausgefunden, warum: weil es den zugrunde liegenden Prozess nicht widerspiegelt, weil die Bewegung des Gleitschirms sehr nichtlinear ist. Es ist eine Kombination aus Kreisbewegung und linearer Drift. Wir haben auch diskutiert, dass in dieser Situation die Faktorenanalyse hilfreich sein könnte. Im Folgenden wird ein möglicher Ansatz zur Modellierung dieser Daten skizziert: PCA-Regression . Aber Faust werde ich Ihnen die PCA Regression zeigen ausgestattet Kurve:
Dies wurde wie folgt erreicht. Führen Sie PCA für den Datensatz mit der zusätzlichen Spalte t = 1: 123 aus, wie bereits erläutert. Sie erhalten drei Hauptkomponenten. Der erste ist einfach t. Die zweite Spalte entspricht der Lon-Spalte und die dritte der Lat-Spalte.
eine Sünde( ω t + φ )ω , φ
Das ist es. Um die angepassten Werte zu erhalten, stellen Sie die Daten von angepassten Komponenten wieder her, indem Sie die Transponierte der PCA-Rotationsmatrix in die vorhergesagten Hauptkomponenten stecken. Mein R-Code oben zeigt Teile der Prozedur und den Rest können Sie leicht herausfinden.
Fazit
Es ist interessant zu sehen, wie leistungsfähig PCA und andere einfache Tools sind, wenn es um physikalische Phänomene geht, bei denen die zugrunde liegenden Prozesse stabil sind und die Eingaben über lineare (oder linearisierte) Beziehungen in Ausgaben umgewandelt werden. In unserem Fall ist die Kreisbewegung also sehr nichtlinear, aber wir können sie leicht linearisieren, indem wir Sinus / Cosinus-Funktionen für einen Zeit-t-Parameter verwenden. Wie Sie gesehen haben, wurden meine Zeichnungen mit nur wenigen Zeilen R-Code erstellt.
Das Regressionsmodell sollte den zugrunde liegenden Prozess widerspiegeln, dann können nur Sie erwarten, dass seine Parameter aussagekräftig sind. Wenn dies ein Gleitschirm ist, der im Wind treibt, dann wird eine einfache Streudiagramm wie in der ursprünglichen Frage die Zeitstruktur des Prozesses verbergen.
Auch die Excel-Regression war eine Querschnittsanalyse, für die die lineare Regression am besten funktioniert, während Ihre Daten ein Zeitreihenprozess sind, bei dem die Beobachtungen zeitlich geordnet sind. Die Zeitreihenanalyse muss hier angewendet werden und wurde in der PCA-Regression durchgeführt.
Hinweise zu einer Funktion
y= f( x )XyXyyXl a t = f( l o n )