통계데이터분석 - 시계열분석 - 시계열 데이터 - ts 🔑 time series analysis | freqeuncy | 주기 | 지수예측모델 | ARIMA

Поделиться
HTML-код
  • Опубликовано: 10 ноя 2024

Комментарии • 22

  • @kykwahk
    @kykwahk  2 года назад

    3:51 예제 데이터 및 데이터 구조 설명 URL
    jse.amstat.org/datasets/utility.dat.txt
    jse.amstat.org/datasets/utility.txt

  • @왹랜드
    @왹랜드 Месяц назад

    유익한 영상 감사합니다!

    • @kykwahk
      @kykwahk  Месяц назад

      감사합니다~^^ 😎

  • @byung-kwonjung9379
    @byung-kwonjung9379 3 года назад

    시계열자료에 대하여 전반적인 개요를 간단명료하게 개념을 알려주어 감사합니다.

  • @백영래-u3x
    @백영래-u3x 2 года назад

    고맙습니다. ^^

  • @상도-y3k
    @상도-y3k 3 года назад

    유익한 강의 감사합니다.

  • @중수투자자
    @중수투자자 3 года назад

    좋은 영상 감사합니다.

  • @user-uu3ej8hd3r
    @user-uu3ej8hd3r 2 года назад

    안녕하세요 최근 빅데이터 모델링 관련해서 공부를 많이 하고 있는 학생입니다. 다름이 아니라 시계열 데이터는 전처리를 처음해봐서 어떻게 해야할지 몰라 질문 드립니다.
    예를 들어 100개의 기업의 지출내역 데이터가 2011년부터 2020년까지 연간 단위로 있다고 가정을 합니다. 이 때 총 소비비용이 반응변수이고, 여러 자잘한 소비내역들을 설명변수로 하여 2021년 각 기업별 총 소비비용을 예측 한다고 할 때, 전처리를 어떻게 해야할까요? 각 데이터들은 하나의 csv파일로 구성되어 있고 총 2011년부터 2020년까지 10개의 csv 파일을 현재 보유중인 상황입니다.
    이 때, 이 10개의 데이터를 하나의 데이터로 조인하여 모델링을 할 수 있을까요? 만약에 조인을 한다면 year 변수를 만들어서 2011년부터 2020년까지 줄세우기 식으로 만들어야 할까요 아니면 다른 방법이 있을까요? 결국 목적은 각 기업별로 예측값을 추출해내야되는데요.

  • @runner4414
    @runner4414 3 года назад

    영상감사합니다. 파이썬으로 강의되신 내용이 있다면 좋겠네요

  • @jang.c.g9552
    @jang.c.g9552 3 года назад

    교수님 강의 잘 들었습니다.. 질문이 있습니다. 교수님께서 설명하시면서 쓰시는 프로그램이 어떤 것인지 알고 싶습니다. 전공은 다르지만 저도 그 프로그램을 배워보고 싶습니다...

    • @kykwahk
      @kykwahk  3 года назад

      R이라는 언어입니다. 데이터분석 언어로서 많이 사용되고 있습니다.
      아래 동영상부터 시작하시면 됩니다.
      R 프로그래밍 / R 기초 - 설치(ruclips.net/video/sL_Kc379r_4/видео.html)
      위 강의를 포함한 R 언어와 관련된 동영상은 아래 재생목록에서 볼 수 있습니다.
      R 프로그래밍 / R 기초

  • @뿅뿅-p6b
    @뿅뿅-p6b 3 года назад

    영상 잘 봤습니다. 혹시 시계열데이터로 회귀분석을 할 수는 없나요?? 시계열분석을 통해 미래값을 예측하는 것이 아니라 시계열데이터안에서 어떤 종속변수가 독립변수에 영향을 주는지 알 수 있는 일반적인 회귀분석이요!

    • @kykwahk
      @kykwahk  3 года назад

      네~ 예측변수에 해당되는 다른 시계열 데이터가 있다면 가능합니다.

    • @뿅뿅-p6b
      @뿅뿅-p6b 3 года назад

      @@kykwahk 그러니까 종속변수도 시계열 데이터라면 가능하다는 말씀이시죠? 제가 계속 이 부분에 대해서 찾아보는데 도저히 나오지가 않고 미래값 예측만 나와서요ㅠㅠ

  • @wendeenergie8355
    @wendeenergie8355 3 года назад +1

    혹시 특정 시간 및 분단위에서 시작하게 만들려면 어떻게 해야하나요? 예를 들어 2012-01-01 04:05:00으로요

    • @kykwahk
      @kykwahk  3 года назад +1

      먼저 frequency에 대해 정확히 이해할 필요가 있습니다. frequency는 "cycle"당, 즉 기준이 되는 단위 시간당 관측값의 개수를 나타냅니다. 지금처럼 분 단위의 관측값을 가지고 있다면 그 관측된 분 단위의 데이터가 먼저 어떤 주기(seasonality라고도 합니다)를 갖고 있는지 결정해야 합니다. 만약 시간을 주기로 갖는다면(hourly data, 즉 hourly seasonality)면 frequency=60, 일간 주기를 갖는다면(daily) frequency=24*60=1440, 주간 주기를 갖는다면(weekly) frequency=24*60*7=10080, 연간 주기를 갖는다면 frequency=24*60*365.25=525960이 됩니다.
      시계열 데이터의 시작 시점이 "2012-01-01 04:05:00"이라면 이는 관측된 데이터가 분 단위로 측정되었으면서 연간 주기를 갖고 있는 것으로 가정하는 것처럼 보입니다. 연도부터 분까지 모두 표현되어 있으니까요(사실 분 데이터라면 시간 단위, 일 단위 정도가 적절할 것 같습니다만... 아무튼...). 그러면 시작 시점을 분 단위로 환산해서 지정해줘야 합니다. 물론 frequency도 그에 맞춰 연간 주기를 갖는 것으로 지정해야 하고요. 예를 들면, 다음과 같이 시계열 데이터를 생성할 수 있습니다.
      > tsdata str(tsdata)
      Time-Series [1:5259600] from 2012 to 2022: -0.5667 1.8975 -0.259 0.0367 0.8304 ...
      > print(tsdata, max=10)
      Time Series:
      Start = c(2012, 245)
      End = c(2022, 244)
      Frequency = 525960
      [1] -0.56674935 1.89754132 -0.25904980 0.03666246 0.83037269 -0.09636472
      [7] 1.80443389 0.63836134 0.97531930 -1.42490889
      [ reached getOption("max.print") -- omitted 5259590 entries ]
      여기에서 rnorm(24*60*365.25*10)은 10년치 데이터를 임의로 생성한 것입니다. 시작 시점 "2012-01-01 04:05:00"은 분 단위로 환산했을 때 2012년의 245분째에 해당합니다.

    • @wendeenergie8355
      @wendeenergie8355 3 года назад

      @@kykwahk 답장 감사드립니다! 정말 자세하게 달아주셨습니다! 저는 그래서 형성할 때
      TS_Frame % as.tibble 이렇게 생성하였는데 nsdiffs 함수에 적용하려고 하니 frequency가 0.003333으로 나와서 ㅜㅜ 이게 계속 stack overflow도 뒤져보니 xts의 경우 분/초단위까지 index로 변환시켜주는 대신 1미만으로만 표현되서 반영이 불가하더라고요 ㅜㅜ 통계학 지식없이... 수리모델 세우는 일만 하다가 무식하게 덤볐더니.. .어렵네요 ㅜㅜ

  • @Null-o2f
    @Null-o2f 3 года назад +1

    교수님 영상 잘 봤습니다!
    저는 국내 코로나19 누적 감염자수를 월단위 시계열로 나타내 해당 곡선을 곰페르츠 모델을 적용한 곡선에 나타내 비교해 보려고 합니다. 곰페르츠 모델을 r에서 구현 한다면 한계점 k의 값을 적용시켜야 하는데 이 과정이 잘 이해가 안가네요.. 혹시 설명이 가능 할까요?

    • @kykwahk
      @kykwahk  3 года назад

      Gompertz 성장곡선모델을 직접 적용해본 적은 없어서 자세한 답변을 드리기는 어렵습니다만 성장곡선을 도출하기 위한 패러미터 추정 방식을 그대로 적용하면 되지 않을까 싶네요. Gompertz 성장곡선모델에 대해 잘 아시는 분들은 댓글 부탁드려요.

  • @kjy1665
    @kjy1665 3 года назад

    시계열 그래프를 그리고싶습니다. 일별 데이터로 주가그래프를 그리고싶은데 이럴땐 frequency를 어떻게 설정해야하나요?? 1년 365일 중에 거래일이 약 250일정도인데... 그래프 그릴 때 x축에 시간이 안맞습니다ㅠ

    • @kykwahk
      @kykwahk  3 года назад +12

      예를 위해 테슬라의 2020년 주가 데이터를 다음과 같이 다운로드했습니다.
      > library(quantmod)
      > start end getSymbols("TSLA", src="yahoo", from=start, to=end)
      [1] "TSLA"
      > head(TSLA, 3)
      TSLA.Open TSLA.High TSLA.Low TSLA.Close TSLA.Volume TSLA.Adjusted
      2020-01-02 84.900 86.140 84.342 86.052 47660500 86.052
      2020-01-03 88.100 90.800 87.384 88.602 88892500 88.602
      2020-01-06 88.094 90.312 88.000 90.308 50665000 90.308
      > tsla tsla head(tsla)
      [1] 86.052 88.602 90.308 93.812 98.428 96.268
      > length(tsla)
      [1] 252
      이를 다음과 같이 일간 시계열 데이터로 변환해서 그래프로 표현할 수는 있습니다. 하지만 질문자께서 원하는 것처럼 X축에 주가에 대응되는 시간이 나타나게 할 수는 없습니다. 왜냐하면 ts() 함수는 시작 시점과 종료 시점 사이에 일정한 주기를 갖는 연속된 시계열 데이터만을 생성할 수 있기 때문입니다. 시계열 데이터는 시작 시점과 종료 시점 사이에서 균등한 간격으로 표현됩니다. 금요일의 주가 데이터 다음에는 월요일의 주가 데이터가 나타나지만 그 사이에 토요일과 일요일의 이틀의 간격이 있다는 것을 표현할 수 없습니다.
      > tsla.ts tsla.ts
      Time Series:
      Start = 1
      End = 252
      Frequency = 1
      [1] 86.052 88.602 90.308 93.812 98.428 96.268 95.630 104.972 107.584
      ...(중략)
      [244] 655.900 695.000 649.860 640.340 645.980 661.770 663.690 665.990 694.780
      > plot(tsla.ts)
      그래도 ts 객체를 이용하여 날짜가 포함된 일별 시계열 그래프를 그리고 싶으면 다음과 같이 해볼 수는 있습니다. 252개의 주가 데이터를 1년 365일 12개월의 기간에 균등하게 배치합니다. 얼핏 보면 잘 그려진 것 같지만 이는 정확한 그래프는 아닙니다. 왜냐하면 주가 데이터와 X축의 날짜가 정확히 대응되지 않기 때문입니다.
      > plot(tsla.ts, xaxt="n")
      > axis(side=1, at=seq(from=1, to=length(tsla), length.out=12),
      + labels=seq(from=as.Date("2020-01-01"), to=as.Date("2020-12-31"), by="months"))
      따라서 ts() 함수가 생성하는 ts 객체를 가지고는 주가 데이터를 그래프로 표현하는 데 한계가 있습니다.
      하지만 다음과 같이 xts() 함수를 사용하면 질문자께서 원하는 시계열 그래프를 그릴 수 있습니다.
      > library(timetk)
      > time head(time)
      [1] "2020-01-02" "2020-01-03" "2020-01-06" "2020-01-07" "2020-01-08" "2020-01-09"
      > library(xts)
      > tsla.xts head(tsla.xts); tail(tsla.xts)
      [,1]
      2020-01-02 86.052
      2020-01-03 88.602
      2020-01-06 90.308
      2020-01-07 93.812
      2020-01-08 98.428
      2020-01-09 96.268
      [,1]
      2020-12-22 640.34
      2020-12-23 645.98
      2020-12-24 661.77
      2020-12-28 663.69
      2020-12-29 665.99
      2020-12-30 694.78
      > Sys.setlocale("LC_ALL", "English")
      [1] "LC_COLLATE=English_United States.1252;LC_CTYPE=English_United States.1252;LC_MONETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252"
      > plot(tsla.xts)
      > plot(tsla.xts, major.ticks="quarters")
      > Sys.setlocale()
      [1] "LC_COLLATE=Korean_Korea.949;LC_CTYPE=Korean_Korea.949;LC_MONETARY=Korean_Korea.949;LC_NUMERIC=C;LC_TIME=Korean_Korea.949"
      시간을 추출합니다(여기에서는 tk_index() 함수를 이용하여 getSymbols() 함수를 통해 다운로드한 주가 데이터로부터 추출하였으나, 갖고 있는 주가 데이터가 있을 경우 그로부터 추출하면 됩니다). 그리고 xts() 함수를 이용하여 xts 시계열 객체를 생성한 후 그래프를 그립니다. Sys.setlocale() 함수를 이용하여 영어권 로케일로 잠시 변경한 것은 X축에 날짜를 표시할 때 영문으로 월이름(Jan, Feb, ...)을 나타내기 위해서입니다.
      여기서는 예를 위해 xts 객체를 별도로 생성했지만 사실 getSymbols() 함수를 통해 다운로드한 주가 데이터는 이미 xts 시계열 객체이기 때문에 다음과 같이 plot() 함수를 바로 적용해서 동일한 그래프를 생성할 수 있습니다.
      > plot(TSLA[, "TSLA.Close"])
      📈 quantmod 패키지를 이용하여 보다 쉽게 주식 차트를 그릴 수 있습니다. 다음 동영상을 참고하세요: '[R] 주식 차트를 그려봐요 - quantmod'(ruclips.net/user/shortsSazwAuPW9V8).
      ⏳xts 시계열 객체에 대해서는 다음 동영상을 참고하세요: '통계데이터분석 - 시계열분석 - 시계열 데이터 - xts'(ruclips.net/video/FHR1KRwYASY/видео.html).

    • @kundol
      @kundol 3 года назад

      @@kykwahk 와....