레이블이 R 설치 및 패키지 설치인 게시물을 표시합니다. 모든 게시물 표시
레이블이 R 설치 및 패키지 설치인 게시물을 표시합니다. 모든 게시물 표시

[purrr, 다수의 회귀분석, 테이블 합치기 join ] part 2 공공데이터 R 프로그램 기초 아파트

   다수의 회귀분석을 들어 갈 것인데,  다수의 회귀 분석에 들어가기 앞서서,  데이터 정리를 앞시간에 하였다.   앞 글에서 보았던 내용을 미리, 코딩 한 다음에 와야 아래의 내용을 이어 나갈 수 있다. 

   여기를 클릭 하시어 내용을 확인 하십시오.


  회귀분석을 다수로 할 수 있는 아파트 단지가 있는데, 2017.6~ 2021.3 까지 아파트 거래가 7건이상인 단지는 4,404이다.   이것을 전부 회귀 모형을 돌려서 R제곱 , Y 절편, 기울기를 한꺼번에  구할 것이다. 

이것을 구할 수 있는 방법은  for 루프문,  lapply, data.table등 여러가지가 있다. 물론 멀티 연산도 있다.   하지만,  이번에는 purrr을 이용해서 할 것이다. 


1. 다수의 회귀분석 4,404  단지 

[purrr, 다수의 회귀분석, 테이블 합치기 join ] 공공데이터 R 프로그램 기초 아파트


   purrr  바닷속의 진주를 찾아 낸다고 표현 해야 할까?   서울에는 수업이 많은 아파트 단지들이 있다.  그 아파트 단지 중에서,   가장 추세적으로 잘 오르는 곳,  아니면 그러하지 아니 한 곳을 찾아 볼 수 있을 수 있다.  어찌 되었든  30년 간 서울에서 살았던 나는 한 가지는 확실히 알고 있다.   서울에는 항상 부자들만 살고 있지 않다.  빈부의 격차가 있다는 이야기이다 . 이번에는 평당 가격 가지고 논의 하겠다.  


1. 데이터 불러오기 및 탐색

[회귀분석] 공공데이터 R 프로그램 기초 아파트

   다수의 회귀 분석도 전처리 분야 중에서 하나이다.  즉 어떤 동네에 있는 아파트가 가격을 추세적으로 잘 설명할 수 있는가 인데,   일반적으로 R2으로 설명을 한다.  


 데이터 탐색 과정에서 R2값으로 한다.  아래 예제와 같이 아파트 지역 한 군데 예측 해보자,  저번까지 이야기 한 강남구 논현동 "아크로힐스논현" 이다.

1. 회귀분석 Basic

아파트 [시계열 그래프 분석] 공공데이터 R 프로그램 기초

  R을 진입 하는 시기에는 항상 시계열 그래프 그리는데,  한참이나 헤메었다.  이유는 데이터 속성 때문인데,   데이터 타입이 Date Type 인가?   character   Type 인가? 에 따라서 그래프 그리는 방법이 달랐기 때문이다.  


     그래프 그리는 목적을 보면,  비교 하려고 하면 "막대 차트", 시계열로 보려고 하면 " 라인 차트", 비중을 보려고 하면,  "원차트 또는 트리맵"을 그려서 봐야 한다.

  하지만 엑셀에서 다 된다고 R에서 다 되는 것 아니 듯이 예전에 엑셀 쓰던것과 같이 써서는 오류가 생긴다.  그래서 오늘은 이것 가지고 이야기 하려고 한다. 

 지금까지의  데이터를 자르고 붙이고, 길이 재고,  문자열을 토큰작업을 30만개 하려면 시간이 많이 걸릴 것 같아 이번에는  저번 글까지 이미 다 만들어 진 데이터 셋을 준비 했다.  
(* 딥러닝 돌릴때 3분은 매우 짧은 시간이지만 R에서 3분은 매우 지루하게 느껴진다.)

     http://rdmkyg.iptime.org/index.php/s/Oex9srbPk7bQtGG/download


 1.  아파트 데이터 새로 로드 하기 

[strsplit 문자열 나누기, purrr map 함수] 공공데이터 R 프로그램 기초 아파트

   아래 그림과 같이 아파트  시군구가 묶여져 있다.   동별로 묶어서 데이터를 분석 하는데, 문제는 없으나,  시단위로 집계 할 수 없고,  구단위로 집게 할 수 없다.      그럼 아래의 데이터는 어떻게 하는 것이 좋은가?  


 아래 그림과 같이 데이터를  "시" , "구", "동" 컬럼(행)으로 나누면 조회하기도 편리하고, 집계하기도 편리하다. 



  

1. 데이터 전처리 strsplit 데이터 셋 나누기

[문자열 길이 nchar, 문자열 붙이기 paste, 문자열 자르기 substr ] 공공데이터 R 프로그램 기초 아파트

  

 시스템에서 일반적으로 데이터를 받으면 항상 겪는 문제가 있다.  일자,  월을 받는 것인데, 일자나 월은 1자리수도 있고 2자리수도 있다.    이것을 데이터로 묶어서,  년월일을 8자리로 바꾸거나  아니면  2021-05-10 처음 년월일 사이에  "-" 하이픈을 넣은 다음 Date 형태로 데이터 유형을 바꾸는 경우가 있다. 

   년월일 8자리로 묶었을 때의 장점은 데이터 소팅이 가능 하다는 것이다.  기본적으로 데이터 소팅은  자리수가 같아야 할 수 있다.   자리수가 다를 경우 아래와 같이 소팅이 잘못 될 수도 있다. 

   2015년 1월 11일과 2015년 2월 2일의 소팅 값이 바뀌었고,  눈으로 식별 하기가 어렵다.  

      >  a <-   c(2015111, 201522, 20151001)

      >  sort(a)

          201522 2015111 20151001

지금 까지 친 소스코드를 파이프연산자 %>%를 활용 해서, 간단하게 정리 하였고, 계약일자의 자리수가 문제가 있다.

# 라이브러리 불러오기 
  library(rio)  
  library(dplyr)
library(readxl)
library(httr)

# 파일을 불러오는 path를 url 변수로 정의      
url = "https://drive.google.com/u/0/uc?id=1PT_0-xJvM9KGp5zzx1jjcPAaS25epx4l&export=download"
GET(url, write_disk(tf <- tempfile(fileext = ".xlsx")))
apt <- read_excel(tf, 1L)  # 1L은 sheet 1을 이야기 하는 것이다.


# 아파트 데이터  전처리        
  apt <- apt %>% 
          rename(전용면적_m3 = '전용면적(㎡)') %>% 
          rename(거래금액_만원 = '거래금액(만원)') %>% 
          mutate(건축년도 = as.integer(건축년도),
                        층 = as.integer(층)) %>% 
          mutate(전용면적_m3 = as.double(전용면적_m3)) %>%
          mutate(거래금액_만원 = as.integer(gsub(",", "", 거래금액_만원)))
  
  glimpse(apt %>%  select(계약년월, 계약일))   
## Rows: 296,656
## Columns: 2
## $ 계약년월 <chr> "202103", "202103", "202103", "202103", "202103", "202103", "2021…
## $ 계약일   <chr> "31", "11", "15", "26", "31", "2", "9", "27", "9", "10", "2", "1…
계약일 데이터를 묶어서 활용하기가 매우 어렵다. 따라서 계약일을 문자열 길이를 체크 한 다음 이를 2자리로 바꾸어서 처리 하여야 한다.
 # 문자열을 카운트 한 다음 앞에 0일 붙임    
   apt <-  apt %>% 
       mutate(계약일 = ifelse(nchar(계약일) ==1, 
                              paste( "0", 계약일, sep = ""),
                              계약일 ))
   apt$계약일[1:10] 
##  [1] "31" "11" "15" "26" "31" "02" "09" "27" "09" "10"

자리수가 바뀌었다. 자리수가 바뀌었다고 모두 끝나는 것이 아니다. 계약일자로 8자리 charactor로 만들어야 한다.

# 일자 자릿수를 8자리를 만든다.    
   apt <- apt %>% 
       mutate(계약일자 = paste0(계약년월, 계약일))

   apt$계약일자[1:10]   
##  [1] "20210331" "20210311" "20210315" "20210326" "20210331" "20210302"
##  [7] "20210309" "20210327" "20210309" "20210310"
 여기 까지 이야기한 함수를 설명하면 아래와 같다.

문자열 길이
nchar(변수)

데이터 붙이기
paste(a, b , sep ="") , sep는 간격임 또는
paste0(a, b), a와 b 문자열을 붙임

  여기에서 데이터 관리의 노하우가 나오는데,  예를 들면,  아파트 거래시 같은 일자에 여러번 계약되는 경우가 있다.   이를 경우에는 데이터를 그룹화 하여 평당 가격을 평균으로 구한다. 

# 강남구 논현동 계약일자별 평당 가격
   apt %>% 
       filter(시군구 == "서울특별시 강남구 논현동") %>% 
       mutate(평당가격 =  거래금액_만원 / (전용면적_m3/3.3)  ) %>% 
       group_by(시군구,계약일자) %>% 
       summarise(평당가격_일별= mean(평당가격))
## # A tibble: 485 x 3
## # Groups:   시군구 [1]
##    시군구                   계약일자 평당가격_일별
##    <chr>                    <chr>            <dbl>
##  1 서울특별시 강남구 논현동 20170701         3292.
##  2 서울특별시 강남구 논현동 20170703         3213.
##  3 서울특별시 강남구 논현동 20170704         1994.
##  4 서울특별시 강남구 논현동 20170707         2853.
##  5 서울특별시 강남구 논현동 20170710         3720.
##  6 서울특별시 강남구 논현동 20170711         2689.
##  7 서울특별시 강남구 논현동 20170712         4430.
##  8 서울특별시 강남구 논현동 20170713         5819.
##  9 서울특별시 강남구 논현동 20170714         3510.
## 10 서울특별시 강남구 논현동 20170715         3479.
## # … with 475 more rows
 위와 같이 데이터를 보니,  데이터 분석이 쉬워 보이지 않는다.   논현동 내에서도,  건축년도, 아파트 브렌드, 위치, 층, 입지조건 등의 사유로  평당 가격이 다르기 때문이다.    


[ 변수, 문자열 바꾸기 gsub (정규화 표현식] 공공데이터 R 프로그램 기초 아파트


    일반 프로그램에서 변수는 특정 숫자를 영어 알파벳에 대입 해서 처리하는 것은 변수로 정했다.  아래 예제와 같이 아주 간단한 변수는 아래와 같다. 
    
    >   a = 1  
    >   b = c
    >   c = a+b
    > print(c)
     3


1.  독립변수와 종속변수의 정의

[데이터 유형] 공공데이터 R 프로그램 기초 아파트

그 동안 데이터의 유형을 배울 때, 그냥 아무런 의미 없이 추상적으로만 하였는데,  지금은 예제로 할 것이다.   


어떠한 데이터 든 처음 받아보면,  항상 정리 하는 것이 있다.   바로 데이터의 유형이다. 데이터의 유형은 목적에 따라 분류가 되는데, " 어떤 단위로 집계할 것인가?  이 데이터는 어떤 데이터와 연관관계가 있는가? 시간 순으로 얼마나 변화되었는가?" 여러가지를 생각해서 데이터 유형을 정리 하여야 한다.     
 

1. 데이터 유형

생존분석 패키지 survival, survminer, muhaz 설치 및 예제

   필자가 근무하고 있는 부서는  보전(maintenance Dept') 부서이다.  생존분석이  매우 중요하다.   고장확률은 아래와 같다. 

    고장확률 =  1 - 생존확를  

  센서에서 고장에 대한 Event 알람 신호를 받아,  알람 신호기간 동안 고장 누적 분포 함수를 구할 수 있다.   

     아래 데이터는 Worcester Heart Attack Study  건으로  심장마비 후 생존 시간에 영향을 미칠 수 있는 연령, 성별 BMI 등 여러가지 요인 조사하였다.  모든 참가자는 심장마비 후 병원 입원시 시작되어 후속 조치에 따른 손실 또는 사망으로 끝난다.    

 아래 사용된 변수는 아래와 같다. 

  • lenfol :  추적기간 (사망 또는  후속조치에 따른 중단)
  • fstat :  후속조치에 다른 중단 변수 ( 손실 = 0 ,   사망 = 1)
  • age : 병원에 있을때 나이
  • hr : 초기 심박수
  • gender : 남성 = 0, 여성 =1

1. survaival packages   

우분투 18.04 R Base 4.05 설치 / Rstudio 설치 및 최신 버전 업그레이드


  R은  패키지 중심으로 발전 한다.   가면 갈수록 유명한 패키지들을 설치 하기가 매우 까다로워진다.  이유는 패키지를 설치  할 때,  다른 패키지를 추가 하여 내장 시키기 때문이다. 

  R의 안정적인 최신 기술을 사용하고 싶으면, 주기적으로 R Base와 R Package 업그레이드 되었는지 확인 하여야 한다.  

패키지의 예를 들자면,  tidyverse는 초기 버전에는 dplyr, ggplot2, readr, readxl, stringr...  정도 약 적은 양의 패키지가 내장 되어 있는데,  버전이 업그레이드 되면서 패키지의 양이 늘어 났다.   대표적으로 늘어난 패키지는 data.table 인데, 이것은 빅데이터를 연산 할 수 있는 패키지이다.  

이번에는 R 설치 하는 것과,  최신기술 업데이터 하는 것에 대하여 이야기 하겠다. 
R을 설치 하려면,  레포지트리 등록은 필수 적인데,  사내에 방화벽이 있다고 가정하고,  방화벽에 영향을 받지 않는 80 port 기준으로 이야기 하겠다. 


1. R Base 설치

dplyr, rio 패키지 [ 컬럼(열) 이름 변경, 변수명 수정] 공공데이터 R 프로그램 기초 아파트

   

 패키지를 불러 올 때 tidyvers 만 불러오면 이 모든 것을 불러 올 수 있는데,  tidyvers 설치 할때 같이 설치 되는 패키지라 별도로 하는 것이 좋다.   왜냐하면 패키지끼지 같은 함수 이름을 쓰는데,  그런 경우에는 별도의 명령어를 써야 하는데,  매우 불편 하다. 

그냥 아는 것만 꺼내다 쓰는 것이 좋다.  

국토 교통부에서 데이터 셋을 받으면,  그 데이터가 좋지 않다.  데이터의 손질이 필요 하다. 손질을 하기 위해 가장 먼저 알아야 할 것은 필드 이름을 알아야 한다.  즉 필드 이름이 매우 잘되어야 데이터를 Manipulation(데이터 조작)을 잘 할 수 있다.  

아래 예제와 같이 아파트 데이터 셋을 받는다.   데이터 셋을 받고 나서 colnames 함수를 이용해서 필드(행)이름을 아래와 같이 본다. 

# 라이브러리 블러오기 
library(readxl)
library(httr)

# 파일을 불러오는 path를 url 변수로 정의      
url = "https://drive.google.com/u/0/uc?id=1PT_0-xJvM9KGp5zzx1jjcPAaS25epx4l&export=download"
GET(url, write_disk(tf <- tempfile(fileext = ".xlsx")))

apt <- read_excel(tf, 1L)  # 1L은 sheet 1을 이야기 하는 것이다. 
# 필드 이름 보기 
colnames(apt)
##  [1] "시군구"         "번지"           "본번"           "부번"          
##  [5] "단지명"         "전용면적(㎡)"   "계약년월"       "계약일"        
##  [9] "거래금액(만원)" "층"             "건축년도"       "도로명"        
## [13] "해제사유발생일"
위의 빨간 색으로 되어 있는 것은  괄호나,  특수문자 가 들어 있다. 그리고 스패이스 값 등이 들어 있으면, 일단 필드(열)의 이름으로 사용 하기가 매우 어렵다. 따라서 아래와 같은 방법으로 이름을 바꾸어야 한다.

가장 쉬운 방법 dplyr의 rename으로 한다. 다른 방법도 있는데, 조금 복잡하다 이 블로그는 기초만 다루므로, 가장 쉬운 방법만 나열 하겠다.

# dplyr 라이브러리 불러오기 
  library(dplyr)
# 아파트 데이터 프레임 필드(열) 이름 바꾸기       
  apt1 <- apt %>% 
          rename(전용면적_m3 = '전용면적(㎡)') %>% 
          rename(거래금액_만원 = '거래금액(만원)') %>% 
          rename(해제사유일 = 해제사유발생일)

  colnames(apt1)        
##  [1] "시군구"        "번지"          "본번"          "부번"         
##  [5] "단지명"        "전용면적_m3"   "계약년월"      "계약일"       
##  [9] "거래금액_만원" "층"            "건축년도"      "도로명"       
## [13] "해제사유일"
dplyr의 특별한 기능은 파이프 연산자(%>%) 이다. 이것이 있음으로 인해 코드가 간단하게 처리 된다.
위와 같이 특수 문자나 스페이스가 들어가 있는 필드(열)에는 인용부호구 ' 쿼텐션을 넣어야 한다. 그런데, dplyr은 name은 다른 것과는 조금 다르다.

문법은 아래와 같다.
reanme( 바뀔 필드 = 원래필드)

이 방법이 정말 쉬운 이유는 다른 방법으로 하면, 전체를 바꾸어야 하나, dplyr로 하면 정말로 필요 한 것만 하면 되는 정말 쉬운 도구이다.



readxl, rio 패키지 - 웹 URL로 엑셀 xlsx 파일을 import 불러오기 , (tidyvers 내장 패키지)

 

     앞에서는  웹 url에서 데이터를 받아서 파일을 업로드 한 다음  다시  파일을 import하는 과정이 있었다.   엑셀이나 CSV 화일을 직접 메일이나, 복사 하였을 때,  하는 것이고,  블로그에 소스를 게시 할 때는  readxl이나,  rio 패키지에서 웹 url링크를 걸어 직접 데이터를 가져오는 것이 좋을 것 같다. 

대부분의 블로그의 R에서는  R 패키지에 내장되어 있는 데이터를 주로  사용하지만,   우리는 실제 존재 하거나, 사용하였던 데이터 패턴을 사용하겠다. 
    
아래 2021년 SW기술자 임금의 URL이 있다.  
   
https://drive.google.com/u/0/uc?id=1qdr8A90jGnkST-FYnyaSTNQyB7VHdLhs&export=download


이것을 다른 방법으로 받을 수 있다.   바로 readxl 이나, rio 패키지에 패스를 거는 쪽에서 url을 걸면 된다.    앞으로 데이터를 가지고 올 때,  url을 가져오는 function( - 명령어를 반복해서 사용할 때는 함수를 쓰는 것이 좋음)을 가져와서 지속적으로 활용 하겠다. 


 1. readxl 

readxl, rio 엑셀 데이터 읽어오는 패키지


제목에 있는 readxl, rio 패키지는 tidyvers 패키지안데 내장 되어 있다.  tidyvers 패키지를 설치 하였다면,  굳이 위의 패키지를 설치 할 필요가 없다. 

 분석 하는 전체 Process 중에서 가장 먼저 하는 것은 데이터 받아오기(import)하는 것이다.  처음 시작 하는 초보자들에게는 이것이 매우 중요하다.   어찌 되었든 자신이 가지고 있는 데이터를 분석 하고자 하는데,   데이터 파일을 열지 못한다면,  시작 자체를 할 수 없다.   예전에는 시스템 디렉토리 패스부터 정리 하였는데,  지금은 그럴 필요가 없어 졌다.   아래와 같이 하면 매우 간단하게 할 수 있다. 


아래를 클릭 하여 2021년도 소프트웨어 기술 종사자 임금 데이터 셋을 아래와 같이 받는다. 
https://drive.google.com/u/0/uc?id=1qdr8A90jGnkST-FYnyaSTNQyB7VHdLhs&export=download


1. Rstudio에서 파일을 import 하는 방법

주식( tidyquant, tqk), 시계열 (forecast) 패키지 통계분석 예제


  가장 얻기는 쉽지만,  활용하기 어려운 데이터 셋 주식 데이터 이다.   데이터의 시계열의 흐름을 보고 미래 사항을 예측 하지만, 아무리 큰 시장에도 심리적인 사항이 있어 정확하게 예측 하기는 어렵다.  하지만,  포토 폴리오를 예측을 할때,  해당 종목이 계절성을 띄고 있는지 선형성을 띄고 있는지 분석 하여, 전략을 수립 할 수 있다. 

## 불필요 객체 지우기  
  rm(list = ls())

# library loading 
  library(tidyquant)  
  library(tqk) 

 일반적으로 반복되는 연산을 할 때 함수를 사용한다.  아래는 주식을 가져오는 함수 인데,  인자(argument)를  시작일,  종목코드 2개를 받아서 계산을 한다. 여기에서 데이터를 가져올때는 tqk에 내장된 함수와 tidyquant에 내장된 dplyr 함수를 이용한다.   시계열 데이터는 일반적으로 월단위로 집계한다. 
# 주식 가져오는 함수 
  data_get_fun <- function(days, stock_code){  

    # Data get from tqk 
      stock <- tqk_get(stock_code, from= days)  
      stock$종목코드 <- stock_code
  
    # R은 데이터를 가져와 전저리 할때 단순함      
      stock <-   stock %>% 
        arrange(date) %>% 
        mutate(전일비 = c(NA,  diff(adjusted))) %>% 
        filter(!is.na(전일비)) %>% 
        mutate(전일시세 = adjusted - 전일비) %>% 
        mutate(등락율 =  round((adjusted - 전일시세)/전일시세 * 100, 2))
      
    return(stock)
  }
  
# 133690(나스닥),  319640 (골드선물)
# 오늘 보다 2019년 4월 부터 데이터를 가져온다. 
  days = as.Date("2019-04-01")
  
  nasdaq <- data_get_fun(days, "133690")
  gold <- data_get_fun(days, "319640")  

# 데이터 프레임으로 취합 한다.  
  df <- rbind(nasdaq, gold)

# 월 단위로 묶는다.  
df_sum <-    df %>% 
         mutate(월 = paste0(substr(date, 1,4), substr(date, 6,7))) %>%           group_by(종목코드, 월) %>% 
          summarise(가격 = mean(close))

  

  시계열 데이터를 만들려면,  월별로 집계된 값을 전처리 하여, 벡터로 만들어야 한다.  "$" 서브세팅은 데이터 프레임에 있는 특정 필드 값을 벡터화하여 가져오는 것이다. 

  미국 나스닥을 선형 추세 기법으로 하였을 때 RSME(평균 제곱근 오차)가 가장 Fitting화 되기 때문에 더블지수 평할로 분석 하고 그린 것이다.  여기에서 h=5 라는 파라미터가 있는데, 앞으로 5개월을 예측 한다는 것이다.  그리고 더블지수 감쇠 라는 파라미터가 있는데 damped = TRUE, phi = 0.9 로 분석 한 것이다.  즉 예측량을 0.9로 10% 감쇠한다는 의미이다.

# 미국 나스닥    
  x <-ts( (df_sum %>% filter(종목코드 == "133690"))$가격 ,
          start = c(2019, 04), 
          end = c(substr(today(),1,4),substr(today(),6,7)),
           frequency= 12)
  
  # 더블지수 평활
  fd <- holt(x, h=5)
  fd1 <- holt(x, damped = TRUE, phi = 0.9, h=5)

  # 더블지수 평활  
  autoplot(x) +
    autolayer(fd, series="홀트 기법", PI=FALSE) +
    autolayer(fd1, series="감쇠 홀트 기법", PI=FALSE) +
    ggtitle("더블지수 평활로  얻은 예측값") + xlab("연도") +
    ylab("미국나스닥 가격") +
    guides(colour=guide_legend(title="예측값"))

더블지수 평활




 

   골드선물의 케이스는 계절성 패턴을 가지고 있어,  가장 낮은 시점이나, 떨어지려고 하는 시점에 구매 해서  올라 갈 때 까지 계속 가지고 있다고,  어느 정도 올랐다고 하면, 파는 전략으로 할 것이기에  매수 지점을 예측 하고, 매도 지점을 예측 하는 계절적인 패턴을 가지고 있어,  투기적인 성향을 띄고 있어 보인다.   여기에서 덧셈기법은 최근의 실적을 더 많이 반영 하고,  곱셈기법은 과거의 실적을 균등하게 반영한다. 
 # 골드 선물
  x <-ts( (df_sum %>% filter(종목코드 == "319640"))$가격 ,
          start = c(2019, 04), 
          end = c(substr(today(),1,4),substr(today(),6,7)),
          frequency= 12)

  
  # 홀트 -윈터스의 덧셈 
  fit1 <- hw(x, seasonal = "additive" , h =5)
  fit2 <- hw(x,seasonal="multiplicative", h =5)
  
  autoplot(x) +
    autolayer(fit1, series="HW 덧셈 예측", PI=FALSE) +
    autolayer(fit2, series="HW 곱셈 예측",
              PI=FALSE) +
    ggtitle("홀트 윈터스로  얻은 예측값") + xlab("연도") +
    ylab("골드 선물 가격") +
    guides(colour=guide_legend(title="예측"))


홀트 윈터스 평활

(tidyquant, tqk, TTR) 주식 패키지 설치

   통계 패키지 R에는 우리가 필요하다고 판단 되는 것들은 모두 있는 것 같다.  이번에는 주식 패키지 설치와 관련된 것인데,  주식패키지는 야후 웹페이지에서 크롤링 해서 가져오는 것이라, 속도가 매우 늦다.   차라리 직접 크롤링 하는것이 속도가 빠르다.   초 단타로 주식을 거래 하지 않는 이상은 실시간 데이터를 가져올 이유가 없다.   10분 단위도 문제 없기 때문에,  직접 크롤링 하는 것 보다.  아래 패키지를 사용하는 것이 오히려 편리 하다.   직접 크롤링 하는 것은 나중에 curl 하는 페이지에서 직접 다룰 예정이다.   



 주식 패키지 
  •  tidyquant  : dplyr, ggplot , TTR,  curl (크롤링) 내장     
                      -> 주식 데이터 크롤링 및 분석 (시계열,  금융관련 지표)
  • tqk :  tidyquant 는 야후에서 가져오나,  tqk는 우리나라 p 사에서 주식 데이터 제공
  • TTR : 주식관련 50개의 지표를 가져옴 ,   MA(이동평균) , CCI,  BBand(볼린저 밴드 등..)


위의 3개의 패키지를 보면,  우리가 보고 싶은 기술적 지표를 직접 구현 할 수 있으며,  주식 트레이딩에서 하는 것과 색다른 프로그래밍을 하여, 원하는 알람을 구할 수 있다.  
 
주식 시장은 심리적인 요인이 많기 때문에,  실제로 기술적 지표를 전부 구하여,  하는 것은 실질적으로 맞지 않는 것이다.   사람의 심리와 지표를 얼마나 잘 매칭 시키느냐가 중요한데,  50개 금융지표 중에서도 심리도가 분명 존재 한다. 하지만 이것은 숫자 일 뿐 그 외의 변수도 생각 해야 한다.  시계열 분석한 다음에  존버 타는 것이 가장 큰 답이 아닐 까 한다. 

 주식 패키지 설치 
 # tidyquant 설치 
  > install.packages("tidyquant")
 
# tqk 설치 
  > if (!requireNamespace("remotes")) install.packages("remotes")

  > remotes::install_github("mrchypark/tqk")

tqk는 우리나라 사람이 tidyquant를  Base Line으로 해서 Git Hub에서 개발 하였기 때문에 개발 버전만 존재 한다. 


시계열 예측 패키지 [forecast]

  

   시계열 예측을 할 만한 데이터들은 매우 많다.  하지만,   시계열 예측은 어느 용도가 가장 좋냐면,  추세가 어느 방향으로 흘러 가는가에 대한 인사이트이다.   즉 이것은 계속 상향 하는 것이냐,  아니면, 평활 한 것이냐,  아니면 하향하는 것이냐,  계절성을 띄고 있느냐가 매우 중요하다. 

어찌 되었든 과거 실적이 15개 이상이면,  시계열 예측이 가능 하다, 회사에서는 소모성 자재에 대해서 예측을 진행 하였지만, 일상 생활에서는 매우 많다.  즉  우리나라 경제 지표 그리고, 주가 지표,  어짜피 과거를 참고 하여, 미래를 예측 하는 것인데,  언제 까지나 과거의 영광이 그대로 재현 될지는 전혀 모른다.
  
  하지만,  다른 방식으로 생각 하면,  무거운 무게 추는 그 방향이 쉽게 바뀌지도 않으며,  바뀔대,  속도가 느려져가면서 바뀌기 시작 한다.   이런 생각을 가지고 있다면, 우리가 자산 관리 할때 어느정도의 포토폴리오를 구성 할 수 있다. 

    예측은 어느 것보다 잘 정리 되어 있는 아래와 같은 교과서가 있다. 
   Monash University 통계학 교수인  Rob J Hyndman  이 정리 하였는데,  코드와 내용이 매우 정리가 잘되었다.  필자도 이것을 보고 실무에 적용 하였다.     아래 그림을 클릭 하면 내용을 볼 수 있다.



   forecast는 R 버전 3.02 이상에 작동되며 , 아래와 같은 패키지도 내장되어 있다.  
  • 그래프 관련 패키지 :  colorspace(컬러 파렛트) , ggplot2(가장 유명한 패키지), graphics
  • 뉴럴넷 패키지 :  nnet( Feed-Forward Neural Networks and Multinomial Log-Linear Models)
  • 병렬 프로세싱 : parallel
  • 시계열 연산 : imtest(선형 테스트),timeDate, tseries, urca, zoo
  • 개발툴 :  magritter( 파이프 연산자 %>%) ,  Rcpp(C++&R)

내장되어 있는 패키지가 많은 만큼 계산도 빨리 되고,  그래프 표현도 잘된다.   아래와 같이 설치 하면 되는데,  이것은 서버를 맨 처음 설치 할 때, 해야 한다. 서버 한참 운영 후에 설치하면 의존성 에러가 나는데,  무언인지 모를 수 있다. 

  위와 같이 내장되어 있는 패키지가 많으므로, 시간도 많이 걸린다.  충돌도 잘되고..

   > install.packages('forecast', dependencies = TRUE)

  의존성 체크에서 TRUE 하였을때 만 설치 된다.  그 만큼 충돌이 많았다는 이야기이다. 

r tidyverse 패키지 설치

1. tidyvers에서 구성되는 패키지

R package 설치 rJava 설치 [공통]

1. rJava 준비 

R Studio devtools 설치 in Ubuntu 18.04

1. Ubuntu 18.04에서 R 설치 개요

css cheat sheet 클래스 선택자, margin(마진), display , center 조정 간단한 구성 요소

 앞에서는 html의 간단한 sheet를 소개 하였습니다.   html은  주로 골격을 나타나는 것이라, 디자인을 하는데는 css로 하여야 합니다.  아래 코드와 같이 css 관련 하여 매우 간단하게 코딩 하겠습니다.  body 부분의 css 코딩  ...