종속 변수가 있습니까?
(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)
yiy(xi)
변수를 동일하게 취급할지 여부는 목적에 따라 다릅니다. 데이터의 고유 품질이 아닙니다. 데이터를 분석하려면 올바른 통계 도구를 선택해야합니다.이 경우 회귀 분석과 PCA 중에서 선택하십시오.
묻지 않은 질문에 대한 답변
그렇다면 왜 귀하의 경우 Excel의 (회귀) 추세선이 귀하의 경우에 적합한 도구가 아닌 것 같습니까? 그 이유는 추세선이 질문되지 않은 질문에 대한 답변이기 때문입니다. 이유는 다음과 같습니다.
lat=a+b×lon
바람이 없었다고 상상해보십시오. 패러 글라이더는 계속해서 같은 원을 만들고있을 것입니다. 추세선은 무엇입니까? 분명히, 그것은 평평한 수평선 일 것이고, 그것의 기울기는 0 일 것이지만, 바람이 수평 방향으로 불어 오는 것을 의미하지는 않습니다!
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인가?
앞서 언급했듯이 패러 글라이더의 움직임에는 적어도 두 가지 요소가 있습니다. 이것은 플롯의 점을 연결할 때 분명히 나타납니다.
한편으로, 원 운동은 정말 귀찮은 일입니다. 바람에 관심이 있습니다. 반면에 풍속을 관찰하지는 않지만 패러 글라이더 만 관찰합니다. 따라서 목표는 관찰 가능한 패러 글라이더의 위치 판독에서 관찰 할 수없는 바람을 추론하는 것입니다. 이것이 바로 요인 분석 및 PCA와 같은 도구가 유용 할 수있는 상황입니다.
PCA의 목표는 출력의 상관 관계를 분석하여 다중 출력을 결정하는 몇 가지 요소를 분리하는 것입니다. 출력이 요인과 선형으로 연결될 때 효과적이며, 이는 데이터의 경우와 같습니다. 바람 드리프트는 단순히 원형 운동의 좌표에 추가되므로 PCA가 여기서 작동합니다.
PCA 설정
그래서 우리는 PCA가 여기에 기회가 있어야한다는 것을 알았지 만 실제로 어떻게 설정할 것입니까? 세 번째 변수 인 시간을 추가하는 것으로 시작하겠습니다. 일정한 샘플링 주파수를 가정하여 각 123 개의 관측치에 1 ~ 123의 시간을 할당합니다. 다음은 3D 플롯이 데이터와 비슷한 모습을 나타내며 나선형 구조를 나타냅니다.
다음 그림은 패러 글라이더의 가상 회전 중심을 갈색 원으로 보여줍니다. 바람과 함께 위도 비행기에서 표류하는 방법을 볼 수 있으며 파란색 점으로 표시된 패러 글라이더가 주위를 돌고 있습니다. 시간은 세로 축입니다. 회전 중심을 처음 두 개의 원만 표시하는 패러 글라이더의 해당 위치에 연결했습니다.
해당 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)
패러 글라이더 회전 중심의 드리프트는 주로 바람에 의해 발생하며, 드리프트의 경로와 속도는 관찰 할 수없는 관심 변수 인 바람의 방향과 속도와 관련이 있습니다. 위도-평면으로 투사 할 때 드리프트가 어떻게 보이는지입니다.
PCA 회귀
따라서, 우리는 규칙적인 선형 회귀가 여기에서 잘 작동하지 않는 것으로 설정했습니다. 패러 글라이더의 동작이 매우 비선형이기 때문에 기본 프로세스를 반영하지 않기 때문에 그 이유도 파악했습니다. 원형 운동과 선형 드리프트의 조합입니다. 또한이 상황에서 요인 분석이 도움이 될 수 있다고 논의했습니다. 다음은이 데이터를 모델링하는 한 가지 가능한 방법 인 PCA 회귀 분석 의 개요입니다 . 하지만 주먹으로 PCA 회귀 적합 곡선을 보여 드리겠습니다 .
이것은 다음과 같이 얻었습니다. 앞에서 설명한 것처럼 추가 열 t = 1 : 123이있는 데이터 세트에서 PCA를 실행하십시오. 세 가지 주요 구성 요소가 있습니다. 첫 번째는 단순히 t입니다. 두 번째는 lon 열에 해당하고 세 번째는 위도 열에 해당합니다.
asin(ωt+φ)ω,φ
그게 다야. 적합치를 얻으려면 PCA 회전 행렬의 전치를 예측 된 주성분에 옮김으로써 적합 된 구성 요소에서 데이터를 복구합니다. 위의 R 코드는 절차의 일부를 나타내며 나머지는 쉽게 알아낼 수 있습니다.
결론
기본 프로세스가 안정적이고 입력이 선형 (또는 선형화 된) 관계를 통해 출력으로 변환되는 물리적 현상과 관련하여 PCA 및 기타 간단한 도구가 얼마나 강력한 지 확인하는 것이 흥미 롭습니다. 따라서 우리의 경우 원형 모션은 매우 비선형 적이지만 시간 t 파라미터에 사인 / 코사인 함수를 사용하여 쉽게 선형화합니다. 내 줄거리는 보듯이 몇 줄의 R 코드로 생성되었습니다.
회귀 모델은 기본 프로세스를 반영해야하며 매개 변수가 의미가 있다고 기대할 수 있습니다. 이것이 바람에 떠 다니는 패러 글라이더라면, 원래 질문에서와 같은 간단한 산포도는 프로세스의 시간 구조를 숨길 것입니다.
또한 Excel 회귀 분석은 선형 회귀 분석이 가장 잘 작동하는 단면 분석이며 데이터는 시계열 프로세스이며 관측치는 시간 순서대로 정렬됩니다. 시계열 분석을 여기에 적용해야하며 PCA 회귀 분석에서 수행했습니다.
기능에 대한 참고 사항
y=f(x)xyxyyxlat=f(lon)