Y a-t-il une variable dépendante?
La courbe de tendance dans Excel provient de la régression de la variable dépendante "lat" sur la variable indépendante "lon". Ce que vous appelez une "ligne de bon sens" peut être obtenu si vous ne désignez pas de variable dépendante et si vous traitez la latitude et la longitude de manière égale. Ce dernier peut être obtenu en appliquant PCA . En particulier, c'est l'un des vecteurs propres de la matrice de covariance de ces variables. Vous pouvez y voir une ligne minimisant la distance la plus courte entre un point donné et une ligne, c'est-à-dire que vous tracez une perpendiculaire à une ligne et que vous minimisez la somme de celles-ci pour chaque observation.( xje, yje)
Voici comment vous pouvez le faire dans 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)
yjey( xje)
Que vous souhaitiez traiter les variables de manière égale ou non dépend de l'objectif. Ce n'est pas la qualité inhérente des données. Vous devez choisir le bon outil statistique pour analyser les données, dans ce cas, choisissez entre la régression et la PCA.
Une réponse à une question qui n'a pas été posée
Alors, pourquoi dans votre cas, une ligne de tendance (de régression) dans Excel ne semble pas être un outil approprié pour votre cas? La raison en est que la courbe de tendance est une réponse à une question qui n’a pas été posée. Voici pourquoi.
l a t = a + b × l o n
Imaginez qu'il n'y ait pas de vent. Un parapentiste ferait le même cercle à plusieurs reprises. Quelle serait la ligne de tendance? Évidemment, ce serait une ligne horizontale plate, sa pente serait nulle, mais cela ne veut pas dire que le vent souffle dans la direction horizontale!
y∼ x
Code R pour la 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])
La direction du vent n’est donc clairement pas alignée avec la ligne de tendance. Ils sont liés, bien sûr, mais de manière non triviale. Par conséquent, ma déclaration selon laquelle la courbe de tendance Excel est une réponse à une question, mais pas à celle que vous avez posée.
Pourquoi PCA?
Comme vous l'avez noté, le mouvement d'un parapente comporte au moins deux composantes: la dérive avec le vent et le mouvement circulaire contrôlé par un parapente. Ceci est clairement visible lorsque vous connectez les points sur votre tracé:
D'une part, le mouvement circulaire vous gêne vraiment: le vent vous intéresse. Par contre, vous n'observez pas la vitesse du vent, vous ne faites qu'observer le parapente. Votre objectif est donc de déduire le vent non observable de la lecture de la position de parapentiste observable. C'est exactement la situation où des outils tels que l'analyse factorielle et l'ACP peuvent être utiles.
L’ACP a pour objectif d’isoler quelques facteurs qui déterminent les résultats multiples en analysant les corrélations entre les produits. C’est efficace lorsque la sortie est liée aux facteurs de manière linéaire, ce qui est le cas dans vos données: la dérive du vent ajoute simplement les coordonnées du mouvement circulaire, c’est pourquoi PCA travaille ici.
Configuration PCA
Nous avons donc établi que l’APC devrait avoir une chance ici, mais comment allons-nous l’organiser? Commençons par ajouter une troisième variable, le temps. Nous allons attribuer les temps 1 à 123 à chaque observation 123, en supposant une fréquence d'échantillonnage constante. Voici à quoi ressemble le tracé 3D des données, révélant sa structure en spirale:
Le graphique suivant montre le centre imaginaire de rotation d'un parapente sous forme de cercles bruns. Vous pouvez voir comment il dérive sur le plan lat-lon avec le vent, alors que le parapente représenté avec un point bleu tourne autour de lui. Le temps est sur l'axe vertical. J'ai connecté le centre de rotation à l'emplacement correspondant d'un parapente ne montrant que les deux premiers cercles.
Le code R correspondant:
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 dérive du centre de rotation du parapente est principalement causée par le vent. La trajectoire et la vitesse de la dérive sont corrélées à la direction et à la vitesse du vent, variables d'intérêt non observables. Voici à quoi ressemble la dérive lorsqu’elle est projetée sur un plan lat-lon:
Régression PCA
Nous avons donc constaté précédemment que la régression linéaire régulière ne semble pas très bien fonctionner ici. Nous avons également compris pourquoi: parce que cela ne reflète pas le processus sous-jacent, parce que le mouvement du parapentiste est hautement non linéaire. C'est une combinaison de mouvement circulaire et d'une dérive linéaire. Nous avons également évoqué le fait que dans cette situation, une analyse factorielle pourrait être utile. Voici un aperçu d’une approche possible pour modéliser ces données: la régression PCA . Mais d'abord je vais vous montrer la courbe ajustée de régression PCA :
Ceci a été obtenu comme suit. Exécutez PCA sur le jeu de données contenant la colonne supplémentaire t = 1: 123, comme indiqué précédemment. Vous obtenez trois composantes principales. Le premier est simplement t. La seconde correspond à la colonne lon, et la troisième à la dernière colonne.
un péché( ω t + φ )ω , φ
C'est ça. Pour obtenir les valeurs ajustées, vous récupérez les données des composants ajustés en insérant la transposition de la matrice de rotation PCA dans les composants principaux prédits. Mon code R ci-dessus montre certaines parties de la procédure et le reste, vous pouvez le comprendre facilement.
Conclusion
Il est intéressant de voir à quel point la PCA et d’autres outils simples sont puissants en ce qui concerne les phénomènes physiques dans lesquels les processus sous-jacents sont stables et les entrées converties en sorties via des relations linéaires (ou linéarisées). Donc, dans notre cas, le mouvement circulaire est très non linéaire mais nous l’avons facilement linéarisé en utilisant des fonctions sinus / cosinus sur un paramètre de temps t. Mes parcelles ont été produites avec seulement quelques lignes de code R, comme vous l'avez vu.
Le modèle de régression doit refléter le processus sous-jacent, alors vous seul pouvez vous attendre à ce que ses paramètres soient significatifs. S'il s'agit d'un parapente dérivant dans le vent, un simple diagramme de dispersion, comme dans la question initiale, masque la structure temporelle du processus.
La régression Excel était également une analyse transversale, pour laquelle la régression linéaire fonctionne le mieux, alors que vos données sont un processus de série chronologique, dans lequel les observations sont ordonnées dans le temps. L'analyse des séries chronologiques doit être appliquée ici, et cela a été fait dans la régression PCA.
Notes sur une fonction
y= f( x )XyXyyXl a t = f( l o n )