【투자·R】통계나 기계 학습 사용해 "부자"가 되고 싶다~결손치 보전~[제2화]
마지막 회의
· 주식을 잘 모른다.
· 추이 plot
· 볼린저 밴드 슬레스라면 사지 않습니까?
(결국 주식은 알 수 없다)
미래의 목적
・볼린저 밴드도 계속 내려갈지도 모르고 앞으로 어떻게 움직일지 궁금하다
・주기라든지 생각해 "오르는 타이밍"이라든지 "낮아지는 타이밍"을 알고 "구매"나 "판매"의 타이밍을 잡고 싶다
이번 이야기
·주기 분석을 위한 시계열 데이터 전처리
이번 기사는 불의의 수학 부분에 한쪽 다리를 돌진했기 때문에,
틀린 부분은 부드럽게 치고 싶다.
가능하면 바보에서도 알 수 있듯이.
ELI5로 부탁드립니다.
주기성 분석
마지막으로 만든 이동 평균을 살펴 보겠습니다.
plot(get_ind$ind, df3$M_line, type="l", col="black")
녀석입니다.
분석에 들어가기 전에 문제가 있었고, 지금까지 소기술을 사용해 속이고 있었습니다만,
이 데이터에는 토, 일, 공휴일 등이 포함되어 있지 않습니다.
주식시장이 하고 있는 244일의 데이터 밖에 없기 때문에, 토일요일이나 공휴일을 메워 줘야 합니다.
(하지만 주말은 매년 있는 것이고, 이 데이터는 이미 244일이라는 주기로 이루어져 있는 것은???)
무슨 생각은 우선 두고 있어.
경험도 되고 보전해 보는가.
누락 값 보충
library(dplyr)
df3$ind <- get_ind$ind
df_tbl<-left_join(plot_label, df3, by = "ind")
head(df_tbl, 100)
캘린더 시간과 SQL에서 말하는 left outer join을 가보면 이렇게 됩니다.
주말이 완전히 빠져 있습니다.
68행째까지 빠져 있는 것은 전회 캘린더의 시각을 발생시킬 때에 많게 발생시킨 것과,
이동 평균 처리에서 발생한 부분입니다.
우선 68행까지는 삭제해, df_tbl의 ind열도 1로부터로 수정합니다.
또한 꼬리에도 여백이 있으므로 꼬리로 확인하고 삭제했습니다.
df_tbl_2 <- df_tbl[-c(1:68),]
df_tbl_2$ind <- c(1:nrow(df_tbl_2))
tail(df_tbl_2,100)
df_tbl_2 <- df_tbl_2[-c(3119:3134),]
그런데, NA의 취급입니다만, 단순히 2일간만 비어 있다면 전후의 5일간의 평일로 수치의 평균을 취해 메워도 좋을 것입니다.
그러나 설날이나 골든 위크처럼 불규칙하게 일주일 동안 둥글게 빠져있는 부분도 있습니다.
다른 열 정보가 있어, 거기에 있어 결손하고 있다면 중회귀나 SVM이나 랜덤 포레스트의 차례입니다만・・・
패키지로 말하면 ForImp라든지 사용할 수 있을 것 같다.
생각하는 보충 방법은, 주변의 수치의 평균치를 취한다든가.
주변의 값으로부터 회귀해 메우거나.
어쨌든 선형 보간이 기쁩니다.
부드럽게 연결해주는 보충을 찾아, 수법을 몇개 사용해 봅니다.
test.day<-df_tbl_2$day[1:365]
test.index<-df_tbl_2$ind[1:365]
test.val<-df_tbl_2$open[1:365]
library(zoo)
fill_approx<-na.approx(test.val)
fill_spline<-na.spline(test.val)
fill_spline_natural<-na.spline(test.val,method="natural")
xaxis_length<-20
set_at <- seq(1, length(test.val), length=xaxis_length)
par(mfrow=c(4,1))
par(oma=c(5, 4, 4, 2))
par(mar=c(2,2,2,2))
plot(test.index,test.val,type="p",main="missing",xlab="",ylab="",xaxt="n")
axis(side=1,tck=1,lty="dotted",labels=F)
par(mar=c(2,2,2,2))
plot(test.index,fill_approx,type="p",main="approx",xlab="",ylab="",xaxt="n")
axis(side=1,tck=1,lty="dotted",labels=F)
par(mar=c(2,2,2,2))
plot(test.index,fill_spline,type="p",main="spline",xlab="",ylab="",xaxt="n")
axis(side=1,tck=1,lty="dotted",labels=F)
par(mar=c(2,2,2,2))
plot(test.index,fill_spline_natural,type="p",main="spline_natural",xlab="",ylab="",xaxt="n")
axis(side=1,tck=1,lty="dotted",labels=F)
axis(side=1, labels=as.character(test.day)[set_at], las=2, at=set_at)
이렇게 비교하면 approx는 단순히 직선으로 채워집니다.
별로 좋은 센스라고는 생각되지 않습니다.
실제 데이터가 없기 때문에, 만약 토일도 주식시장이 열려 있는 것 같은 평행세계가 있고, 실은 직선 쪽이 옳다. 이런 일도 있을지도 모릅니다만, 여기는 마음대로 각하라고 하겠습니다.
spline과 spline_natural은 그렇게 차이가 없으며 둘 다 부드럽게 연결되어 있습니다.
어느 쪽을 선택해도 좋을 것 같습니다.
그런데 이번 필요했던 것은 이동 평균이었기 때문에 이동 평균의 평활화를 단순 스플라인으로 실시해 끝입니다.
fill_data<-NULL
fill_data <- data.frame(ind = df_tbl_2$ind,
day = df_tbl_2$day,
move = na.spline(df_tbl_2$M_line))
다음에 주기성 분석
돌릴 돈이 없어.
Reference
이 문제에 관하여(【투자·R】통계나 기계 학습 사용해 "부자"가 되고 싶다~결손치 보전~[제2화]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Ringa_hyj/items/a5e3ba55aa07ad7889ba
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
plot(get_ind$ind, df3$M_line, type="l", col="black")
library(dplyr)
df3$ind <- get_ind$ind
df_tbl<-left_join(plot_label, df3, by = "ind")
head(df_tbl, 100)
캘린더 시간과 SQL에서 말하는 left outer join을 가보면 이렇게 됩니다.
주말이 완전히 빠져 있습니다.
68행째까지 빠져 있는 것은 전회 캘린더의 시각을 발생시킬 때에 많게 발생시킨 것과,
이동 평균 처리에서 발생한 부분입니다.
우선 68행까지는 삭제해, df_tbl의 ind열도 1로부터로 수정합니다.
또한 꼬리에도 여백이 있으므로 꼬리로 확인하고 삭제했습니다.
df_tbl_2 <- df_tbl[-c(1:68),]
df_tbl_2$ind <- c(1:nrow(df_tbl_2))
tail(df_tbl_2,100)
df_tbl_2 <- df_tbl_2[-c(3119:3134),]
그런데, NA의 취급입니다만, 단순히 2일간만 비어 있다면 전후의 5일간의 평일로 수치의 평균을 취해 메워도 좋을 것입니다.
그러나 설날이나 골든 위크처럼 불규칙하게 일주일 동안 둥글게 빠져있는 부분도 있습니다.
다른 열 정보가 있어, 거기에 있어 결손하고 있다면 중회귀나 SVM이나 랜덤 포레스트의 차례입니다만・・・
패키지로 말하면 ForImp라든지 사용할 수 있을 것 같다.
생각하는 보충 방법은, 주변의 수치의 평균치를 취한다든가.
주변의 값으로부터 회귀해 메우거나.
어쨌든 선형 보간이 기쁩니다.
부드럽게 연결해주는 보충을 찾아, 수법을 몇개 사용해 봅니다.
test.day<-df_tbl_2$day[1:365]
test.index<-df_tbl_2$ind[1:365]
test.val<-df_tbl_2$open[1:365]
library(zoo)
fill_approx<-na.approx(test.val)
fill_spline<-na.spline(test.val)
fill_spline_natural<-na.spline(test.val,method="natural")
xaxis_length<-20
set_at <- seq(1, length(test.val), length=xaxis_length)
par(mfrow=c(4,1))
par(oma=c(5, 4, 4, 2))
par(mar=c(2,2,2,2))
plot(test.index,test.val,type="p",main="missing",xlab="",ylab="",xaxt="n")
axis(side=1,tck=1,lty="dotted",labels=F)
par(mar=c(2,2,2,2))
plot(test.index,fill_approx,type="p",main="approx",xlab="",ylab="",xaxt="n")
axis(side=1,tck=1,lty="dotted",labels=F)
par(mar=c(2,2,2,2))
plot(test.index,fill_spline,type="p",main="spline",xlab="",ylab="",xaxt="n")
axis(side=1,tck=1,lty="dotted",labels=F)
par(mar=c(2,2,2,2))
plot(test.index,fill_spline_natural,type="p",main="spline_natural",xlab="",ylab="",xaxt="n")
axis(side=1,tck=1,lty="dotted",labels=F)
axis(side=1, labels=as.character(test.day)[set_at], las=2, at=set_at)
이렇게 비교하면 approx는 단순히 직선으로 채워집니다.
별로 좋은 센스라고는 생각되지 않습니다.
실제 데이터가 없기 때문에, 만약 토일도 주식시장이 열려 있는 것 같은 평행세계가 있고, 실은 직선 쪽이 옳다. 이런 일도 있을지도 모릅니다만, 여기는 마음대로 각하라고 하겠습니다.
spline과 spline_natural은 그렇게 차이가 없으며 둘 다 부드럽게 연결되어 있습니다.
어느 쪽을 선택해도 좋을 것 같습니다.
그런데 이번 필요했던 것은 이동 평균이었기 때문에 이동 평균의 평활화를 단순 스플라인으로 실시해 끝입니다.
fill_data<-NULL
fill_data <- data.frame(ind = df_tbl_2$ind,
day = df_tbl_2$day,
move = na.spline(df_tbl_2$M_line))
다음에 주기성 분석
돌릴 돈이 없어.
Reference
이 문제에 관하여(【투자·R】통계나 기계 학습 사용해 "부자"가 되고 싶다~결손치 보전~[제2화]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Ringa_hyj/items/a5e3ba55aa07ad7889ba
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【투자·R】통계나 기계 학습 사용해 "부자"가 되고 싶다~결손치 보전~[제2화]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Ringa_hyj/items/a5e3ba55aa07ad7889ba텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)