มีตัวแปรตามหรือไม่
เส้นแนวโน้มใน Excel มาจากการถดถอยของตัวแปรที่ขึ้นต่อกัน "lat" ในตัวแปรอิสระ "lon" สิ่งที่คุณเรียกว่า "เส้นสามัญสำนึก" สามารถรับได้เมื่อคุณไม่ได้กำหนดขึ้นอยู่กับตัวแปรและรักษาทั้งละติจูดและลองจิจูดอย่างเท่าเทียมกัน หลังสามารถหาได้โดยใช้PCA โดยเฉพาะอย่างยิ่งมันเป็นหนึ่งในเวกเตอร์ไอเก็นของเมทริกซ์ความแปรปรวนร่วมของตัวแปรเหล่านี้ คุณสามารถคิดว่ามันเป็นเส้นที่ลดระยะทางที่สั้นที่สุดจากจุดใด ๆ ที่กำหนดให้กับเส้นนั้นเองเช่นคุณวาดเส้นตั้งฉากกับเส้นหนึ่ง(xi,yi)
นี่คือวิธีที่คุณสามารถทำได้ใน 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)
เส้นแนวโน้มที่คุณได้รับจาก Excel นั้นเหมือนกับสามัญเวกเตอร์ eigen จาก PCA เมื่อคุณเข้าใจว่าในการถดถอยของ Excel ตัวแปรจะไม่เท่ากัน ที่นี่คุณจะลดระยะทางแนวตั้งจากเป็นโดยที่แกน y คือละติจูดและแกน x เป็นลองจิจูดyiy(xi)
ไม่ว่าคุณต้องการปฏิบัติต่อตัวแปรอย่างเท่าเทียมกันหรือไม่นั้นขึ้นอยู่กับวัตถุประสงค์ ไม่ใช่คุณภาพของข้อมูลโดยธรรมชาติ คุณต้องเลือกเครื่องมือทางสถิติที่ถูกต้องในการวิเคราะห์ข้อมูลในกรณีนี้เลือกระหว่างการถดถอยและ PCA
คำตอบสำหรับคำถามที่ไม่ได้ถาม
ดังนั้นทำไมในกรณีของคุณเทรนด์ไลน์ (การถดถอย) ใน Excel จึงไม่เป็นเครื่องมือที่เหมาะสมสำหรับเคสของคุณ เหตุผลก็คือเทรนด์ไลน์เป็นคำตอบสำหรับคำถามที่ไม่ได้ถาม นี่คือเหตุผล
การถดถอย Excel พยายามที่จะประมาณค่าพารามิเตอร์ของบรรทัดlon ดังนั้นปัญหาแรกคือละติจูดไม่ใช่ฟังก์ชั่นของลองจิจูดพูดอย่างเคร่งครัด (ดูหมายเหตุตอนท้ายโพสต์) และไม่ใช่ประเด็นหลัก ปัญหาที่แท้จริงคือคุณไม่สนใจแม้แต่ทำเลที่ตั้งของ paraglider แต่คุณสนใจลมlat=a+b×lon
ลองจินตนาการว่าไม่มีลม Paraglider จะทำวงกลมเดียวกันซ้ำไปซ้ำมา เส้นแนวโน้มคืออะไร? เห็นได้ชัดว่ามันจะเป็นเส้นแนวนอนราบเรียบความชันจะเป็นศูนย์ แต่ก็ไม่ได้หมายความว่าลมจะพัดไปในทิศทางแนวนอน!
นี่คือพล็อตจำลองสำหรับเมื่อมีลมแรงตามแกน y ในขณะที่ paraglider กำลังสร้างวงกลมที่สมบูรณ์แบบ คุณสามารถดูว่าการถดถอยเชิงเส้นสร้างผลลัพธ์ที่ไร้สาระซึ่งเป็นเส้นแนวโน้มแนวนอน จริงๆแล้วมันเป็นลบเพียงเล็กน้อย แต่ไม่มีนัยสำคัญ ทิศทางลมจะแสดงด้วยเส้นสีแดง:y∼x
รหัส R สำหรับการจำลอง:
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])
ดังนั้นทิศทางของลมอย่างชัดเจนจึงไม่สอดคล้องกับเส้นแนวโน้มเลย แน่นอนว่ามันเชื่อมโยงกัน แต่ในทางที่ไม่สำคัญ ดังนั้นคำแถลงของฉันว่าเส้นแนวโน้ม Excel คือคำตอบของคำถาม แต่ไม่ใช่คำถามที่คุณถาม
ทำไมต้อง PCA
ดังที่คุณได้กล่าวมาแล้วว่ามีส่วนประกอบของการเคลื่อนไหวอย่างน้อยสองอย่างของ paraglider: การดริฟท์ที่มีลมและการเคลื่อนที่แบบวงกลมควบคุมโดย paraglider จะเห็นได้อย่างชัดเจนเมื่อคุณเชื่อมต่อจุดต่างๆในพล็อตของคุณ:
ในอีกด้านหนึ่งการเคลื่อนไหวแบบวงกลมเป็นสิ่งที่สร้างความรำคาญให้กับคุณจริงๆ: คุณสนใจลม แม้ว่าในทางกลับกันคุณจะไม่สังเกตความเร็วลม แต่คุณจะสังเกตได้จากร่มร่อนเท่านั้น ดังนั้นวัตถุประสงค์ของคุณคือการสรุปลมที่ไม่สามารถสังเกตเห็นได้จากการอ่านตำแหน่งของ paraglider ที่สังเกตได้ นี่เป็นสถานการณ์ที่เครื่องมือเช่นการวิเคราะห์ปัจจัยและ PCA มีประโยชน์อย่างแน่นอน
จุดมุ่งหมายของ PCA คือการแยกปัจจัยบางอย่างที่กำหนดเอาท์พุทหลายโดยการวิเคราะห์ความสัมพันธ์ในการส่งออก จะมีประสิทธิภาพเมื่อเอาต์พุตเชื่อมโยงกับปัจจัยเชิงเส้นซึ่งเกิดขึ้นกับข้อมูลของคุณ: การเลื่อนของลมเพียงเพิ่มพิกัดของการเคลื่อนที่แบบวงกลมนั่นคือสาเหตุที่ PCA ทำงานที่นี่
การตั้งค่า PCA
ดังนั้นเรายืนยันว่า PCA ควรมีโอกาสที่นี่ แต่เราจะตั้งค่าได้อย่างไร เริ่มจากการเพิ่มตัวแปรตัวที่สามเวลา เราจะกำหนดเวลา 1 ถึง 123 ให้กับการสังเกตแต่ละ 123 ครั้งโดยสมมติว่าความถี่การสุ่มตัวอย่างคงที่ นี่คือลักษณะของพล็อต 3 มิติที่มีลักษณะของข้อมูลเปิดเผยโครงสร้างเกลียว:
พล็อตถัดไปจะแสดงศูนย์กลางจินตนาการของการหมุนของร่มร่อนเป็นวงกลมสีน้ำตาล คุณสามารถดูว่ามันลอยอยู่บนระนาบ lat-lon กับลมได้อย่างไรขณะที่ paraglider ที่แสดงด้วยจุดสีน้ำเงินกำลังหมุนรอบมัน เวลาอยู่ในแกนตั้ง ฉันเชื่อมต่อศูนย์กลางการหมุนกับตำแหน่งที่สอดคล้องกันของ paraglider ที่แสดงเฉพาะวงกลมสองวงแรก
รหัส R ที่สอดคล้องกัน:
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)
การหมุนของจุดศูนย์กลางของการหมุนของ paraglider ส่วนใหญ่เกิดจากลมและเส้นทางและความเร็วของการดริฟท์สัมพันธ์กับทิศทางและความเร็วของลมตัวแปรที่ไม่สามารถสังเกตเห็นได้ นี่คือลักษณะที่ดริฟท์เมื่อคาดว่าจะเป็นระนาบ lat-lon:
การถดถอย PCA
ดังนั้นก่อนหน้านี้เราจึงพบว่าการถดถอยเชิงเส้นปกติดูเหมือนจะทำงานได้ไม่ดีนักที่นี่ นอกจากนี้เรายังหาสาเหตุ: เพราะมันไม่ได้สะท้อนกระบวนการพื้นฐานเพราะการเคลื่อนไหวของ paraglider นั้นไม่เชิงเส้นอย่างมาก มันเป็นการรวมกันของการเคลื่อนไหวแบบวงกลมและการเลื่อนเชิงเส้น นอกจากนี้เรายังกล่าวว่าในการวิเคราะห์ปัจจัยสถานการณ์นี้อาจเป็นประโยชน์ นี่คือร่างของวิธีการที่เป็นไปได้หนึ่งที่จะสร้างแบบจำลองข้อมูลนี้: การถดถอย PCA แต่กำปั้นฉันจะแสดง PCA ถดถอยพอดีโค้ง:
สิ่งนี้ได้รับดังนี้ เรียกใช้ PCA บนชุดข้อมูลที่มีคอลัมน์พิเศษ t = 1: 123 ตามที่กล่าวไว้ก่อนหน้า คุณได้รับสามองค์ประกอบหลัก อันแรกคือ t ที่สองสอดคล้องกับคอลัมน์โหลนและคอลัมน์ที่สามถึง lat
ฉันพอดีหลังสององค์ประกอบหลักให้กับตัวแปรของรูปแบบที่ที่สกัดจากการวิเคราะห์สเปกตรัมของส่วนประกอบ พวกมันมีความถี่เท่ากัน แต่มีเฟสแตกต่างกันซึ่งไม่น่าประหลาดใจเมื่อมีการเคลื่อนที่แบบวงกลมasin(ωt+φ)ω,φ
แค่นั้นแหละ. เพื่อให้ได้ค่าติดตั้งที่คุณกู้คืนข้อมูลจากส่วนประกอบที่ติดตั้งโดยเสียบทรานสโพสของเมทริกซ์การหมุน PCA เข้ากับส่วนประกอบหลักที่ทำนายไว้ รหัส R ของฉันด้านบนแสดงส่วนต่าง ๆ ของขั้นตอนและส่วนที่เหลือที่คุณสามารถทราบได้อย่างง่ายดาย
ข้อสรุป
เป็นที่น่าสนใจที่จะเห็นว่า PCA และเครื่องมือง่ายๆอื่น ๆ มีประสิทธิภาพเพียงใดเมื่อพูดถึงปรากฏการณ์ทางกายภาพที่กระบวนการพื้นฐานมีความเสถียรและอินพุตจะแปลงเป็นเอาต์พุตผ่านความสัมพันธ์แบบเชิงเส้น (หรือแบบเชิงเส้น) ดังนั้นในกรณีของเราการเคลื่อนที่แบบวงกลมนั้นไม่เชิงเส้นมาก แต่เราทำให้เป็นเส้นตรงได้อย่างง่ายดายโดยใช้ฟังก์ชัน sine / cosine กับพารามิเตอร์ time t แปลงของฉันถูกสร้างขึ้นด้วยรหัส R เพียงไม่กี่บรรทัดตามที่คุณเห็น
ตัวแบบการถดถอยควรสะท้อนถึงกระบวนการพื้นฐานจากนั้นมีเพียงคุณเท่านั้นที่คาดหวังว่าพารามิเตอร์ของมันจะมีความหมาย หากนี่คือ paraglider ที่ลอยอยู่ในสายลมพล็อตการกระจายแบบง่ายเหมือนในคำถามดั้งเดิมจะซ่อนโครงสร้างเวลาของกระบวนการ
นอกจากนี้การถดถอยของ Excel ยังเป็นการวิเคราะห์แบบตัดขวางซึ่งการถดถอยเชิงเส้นจะทำงานได้ดีที่สุดในขณะที่ข้อมูลของคุณเป็นกระบวนการอนุกรมเวลาซึ่งการสังเกตได้รับคำสั่งในเวลา ต้องใช้การวิเคราะห์อนุกรมเวลาที่นี่และดำเนินการในการถดถอย PCA
หมายเหตุเกี่ยวกับฟังก์ชั่น
เนื่องจาก Paraglider กำลังสร้างวงกลมจะมีละติจูดหลายเส้นที่สอดคล้องกับลองจิจูดเดียว ในทางคณิตศาสตร์ฟังก์ชั่นแผนที่ค่าเป็นค่าเดียวYมันหลายต่อหนึ่งความสัมพันธ์ที่มีความหมายว่าหลายอาจสอดคล้องกับแต่ไม่หลายตรงตามลักษณะที่เดียวxนั่นคือเหตุผลที่ไม่ใช่ฟังก์ชั่นพูดอย่างเคร่งครัดy=f(x)xyxyyxlat=f(lon)