Apakah ada variabel dependen?
Garis tren di Excel adalah dari regresi variabel dependen "lat" pada variabel independen "lon." Apa yang Anda sebut "garis akal sehat" dapat diperoleh saat Anda tidak menetapkan variabel dependen , dan memperlakukan lintang dan bujur secara merata. Yang terakhir dapat diperoleh dengan menerapkan PCA . Secara khusus, ini adalah salah satu vektor eigen dari matriks kovarians dari variabel-variabel ini. Anda dapat menganggapnya sebagai garis yang meminimalkan jarak terpendek dari titik ke garis itu sendiri, yaitu Anda menggambar garis tegak lurus ke garis, dan meminimalkan jumlah dari mereka untuk setiap pengamatan.(xi,yi)
Berikut ini cara melakukannya di 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)
Garis tren yang Anda dapatkan dari Excel adalah sebagai akal sehat seperti vektor eigen dari PCA ketika Anda memahami bahwa dalam regresi Excel variabel tidak sama. Di sini Anda meminimalkan jarak vertikal dari ke , di mana sumbu y adalah garis lintang dan sumbu x adalah garis bujur.yiy(xi)
Apakah Anda ingin memperlakukan variabel sama atau tidak tergantung pada tujuan. Ini bukan kualitas data yang melekat. Anda harus memilih alat statistik yang tepat untuk menganalisis data, dalam hal ini memilih antara regresi dan PCA.
Jawaban untuk pertanyaan yang tidak diajukan
Jadi, mengapa dalam kasus Anda garis tren (regresi) di Excel tampaknya tidak menjadi alat yang cocok untuk kasus Anda? Alasannya adalah bahwa garis tren adalah jawaban untuk pertanyaan yang tidak ditanyakan. Inilah sebabnya.
Regresi Excel sedang mencoba memperkirakan parameter garis . Jadi, masalah pertama adalah garis lintang bahkan bukan fungsi garis bujur, secara tegas (lihat catatan di akhir posting), dan itu bahkan bukan masalah utama. Masalah sebenarnya adalah bahwa Anda bahkan tidak tertarik pada lokasi paraglider, Anda tertarik pada angin.lat=a+b×lon
Bayangkan tidak ada angin. Paraglider akan membuat lingkaran yang sama berulang-ulang. Apa yang akan menjadi garis tren? Jelas, itu akan menjadi garis horizontal datar, kemiringannya akan nol, namun itu tidak berarti bahwa angin bertiup ke arah horisontal!
Berikut adalah plot simulasi ketika ada angin kencang sepanjang sumbu y, sementara paraglider membuat lingkaran yang sempurna. Anda dapat melihat bagaimana regresi linier menghasilkan hasil yang tidak masuk akal, garis tren horizontal. Sebenarnya, ini bahkan sedikit negatif, tetapi tidak signifikan. Arah angin ditunjukkan dengan garis merah:y∼x
Kode R untuk simulasi:
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])
Jadi, arah angin jelas tidak selaras dengan garis tren sama sekali. Mereka terhubung, tentu saja, tetapi dengan cara nontrivial. Oleh karena itu, pernyataan saya bahwa garis tren Excel adalah jawaban untuk beberapa pertanyaan, tetapi bukan yang Anda tanyakan.
Mengapa PCA?
Seperti yang Anda catat setidaknya ada dua komponen gerakan paraglider: drift dengan angin dan gerakan melingkar yang dikendalikan oleh paraglider. Ini terlihat jelas saat Anda menghubungkan titik-titik pada plot Anda:
Di satu sisi, gerakan memutar itu benar-benar mengganggu Anda: Anda tertarik pada angin. Meskipun di sisi lain, Anda tidak mengamati kecepatan angin, Anda hanya mengamati paraglider. Jadi, tujuan Anda adalah untuk menyimpulkan angin yang tidak dapat diobservasi dari pembacaan lokasi paraglider yang dapat diamati. Ini persis situasi di mana alat-alat seperti analisis faktor dan PCA dapat bermanfaat.
Tujuan PCA adalah untuk mengisolasi beberapa faktor yang menentukan banyak keluaran dengan menganalisis korelasi dalam keluaran. Ini efektif ketika output dikaitkan dengan faktor-faktor linear, yang terjadi pada data Anda: angin melayang hanya menambah koordinat gerakan melingkar, itu sebabnya PCA bekerja di sini.
Pengaturan PCA
Jadi, kami menetapkan bahwa PCA harus memiliki peluang di sini, tetapi bagaimana kami akan mengaturnya? Mari kita mulai dengan menambahkan variabel ketiga, waktu. Kita akan menetapkan waktu 1 hingga 123 untuk setiap 123 pengamatan, dengan asumsi frekuensi pengambilan sampel konstan. Begini tampilan plot 3D dari data, memperlihatkan struktur spiralnya:
Plot berikutnya menunjukkan pusat imajiner rotasi paraglider sebagai lingkaran cokelat. Anda dapat melihat bagaimana itu melayang di pesawat lat-lon dengan angin, sementara paraglider yang ditunjukkan dengan titik biru berputar-putar di sekitarnya. Waktu berada pada sumbu vertikal. Saya menghubungkan pusat rotasi ke lokasi paraglider yang menunjukkan hanya dua lingkaran pertama.
Kode R yang sesuai:
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)
Penyimpangan pusat rotasi paraglider disebabkan terutama oleh angin, dan jalur dan kecepatan penyimpangan berkorelasi dengan arah dan kecepatan angin, variabel-variabel yang tidak dapat diamati. Beginilah tampilan drift ketika diproyeksikan ke bidang lat-lon:
Regresi PCA
Jadi, sebelumnya kami menetapkan bahwa regresi linier reguler tampaknya tidak berfungsi dengan baik di sini. Kami juga menemukan alasannya: karena tidak mencerminkan proses yang mendasarinya, karena gerakan paraglider sangat tidak linier. Ini kombinasi dari gerakan melingkar dan penyimpangan linear. Kami juga membahas bahwa dalam analisis situasi situasi ini mungkin bermanfaat. Berikut adalah garis besar dari satu pendekatan yang mungkin untuk memodelkan data ini: Regresi PCA . Tapi tinju saya akan menunjukkan Anda kurva pas regresi PCA :
Ini telah diperoleh sebagai berikut. Jalankan PCA pada set data yang memiliki kolom tambahan t = 1: 123, seperti yang dibahas sebelumnya. Anda mendapatkan tiga komponen utama. Yang pertama adalah t. Yang kedua sesuai dengan kolom lon, dan yang ketiga ke kolom lat.
Saya menyesuaikan dua komponen utama yang terakhir dengan variabel bentuk , di mana diekstraksi dari analisis spektral komponen. Mereka kebetulan memiliki frekuensi yang sama tetapi fase yang berbeda, yang tidak mengherankan mengingat gerakan melingkar.asin(ωt+φ)ω,φ
Itu dia. Untuk mendapatkan nilai yang pas Anda memulihkan data dari komponen yang dipasang dengan mencolokkan transposis dari matriks rotasi PCA ke dalam komponen utama yang diprediksi. Kode R saya di atas menunjukkan bagian dari prosedur, dan sisanya Anda dapat dengan mudah mengetahuinya.
Kesimpulan
Sangat menarik untuk melihat seberapa kuat PCA dan alat-alat sederhana lainnya ketika datang ke fenomena fisik di mana proses yang mendasarinya stabil, dan input diterjemahkan ke dalam output melalui hubungan linear (atau linierisasi). Jadi dalam kasus kami gerakan melingkar sangat nonlinear tetapi kami dengan mudah melinearkannya dengan menggunakan fungsi sinus / kosinus pada parameter t waktu. Plot saya diproduksi hanya dengan beberapa baris kode R seperti yang Anda lihat.
Model regresi harus mencerminkan proses yang mendasarinya, maka hanya Anda yang dapat mengharapkan bahwa parameternya bermakna. Jika ini adalah paraglider yang terbawa angin, maka sebaran plot sederhana seperti dalam pertanyaan asli akan menyembunyikan struktur waktu proses.
Regresi Excel juga merupakan analisis cross sectional, yang regresi liniernya bekerja paling baik, sedangkan data Anda merupakan proses deret waktu, di mana pengamatannya diatur dalam waktu. Analisis deret waktu harus diterapkan di sini, dan itu dilakukan dalam regresi PCA.
Catatan tentang suatu fungsi
Karena paraglider membuat lingkaran, akan ada banyak garis lintang yang sesuai dengan satu garis bujur. Dalam matematika fungsi memetakan nilai ke nilai tunggal . Ini hubungan banyak-ke-satu, yang berarti bahwa beberapa dapat sesuai dengan , tetapi tidak beberapa sesuai dengan satu . Itulah sebabnya bukan fungsi, secara tegas.y=f(x)xyxyyxlat=f(lon)