>RE::VISION CRM

R 데이터 분석

구글트렌즈로 보는 드러커와 스티브잡스 분석[R 시계열분석]

YONG_X 2013. 9. 27. 23:37


## ---  오랜만에 R을 활용한 간단한 데이터 분석 샘플 -----------


# 이번엔 시계열 분석의 기초와 

# 비지니스의 아이콘 두사람에 대한 분석 ^^

# 피터 드러커와 스티브 잡스


## time series analysis sample

# data got from google trends

# [note] 구글트렌즈 (trends.google.com ) 에 접속해 키워드를 입력하고 CSV로 다운로드 실시

# 구글 로그인을 하지 않으면 할 수 없음을 유의!

# 아래는 구글 트렌즈 화면

# 여러개의 키워드에 대한 검색 추이를 비교해서 볼 수 있는 간편한 툴





# [1] read the first sheet in an excel file

# 다운로드한 엑셀시트를 임포트 (먼저 CSV로 저장된 파일을 엑셀로 변환한 후 import 


require(xlsx)  # 엑셀 파일을 읽어 들이기 위한 패키지 먼저 설치후 사용

s_ts1 <- read.xlsx("steve_jobs_1.xlsx", 1)  # 엑셀은 여러 시트가 있을 수 있으므로 첫번째 시트로 지정


plot(s_ts1, type="l")  # 먼저 스티브 잡스 (Steve Jobs) 에 대한 구글 검색 추이 분포를 확인 


# 왜 2012년이 잡스의 해였는지는 누구나 알겠지 ^^


s_ts2 <- read.xlsx("google_ts_smpl1.xlsx", 1) # 이번에는 여러 키워드를 비교한 추이 파일을 import


plot(s_ts2$peter.drucker, type="l") # 드러커에 대한 검색 추이를 확인


# 한번의 피크(spike 라고 보통 부르는) 는 있었지만 전체적으로 보면 관심이 줄어드는 추세

# 추세선을 넣는 부분은 조금 후에 설명!


plot(s_ts2$iphone, type="l")


# 이번에는 스티브잡스의 유품인 아이폰에 대한 검색 추이 확인

# 그리고 추세에 대한 확인

# 역시... 지금은 잡스와 아이폰의 시대... 드러커와는 비교가 안되네

# 드러커는 지는 해,  잡스는 뜨는 해~~ (TT)







    • 내용을 입력하세요

    • 피터 드러커는 오스트리아 빈 출신의 미국인이며, 작가이자 경영학자였으며 스스로는 “사회생태학자”라고 불렀다. 그의 저서들은 학문적으로나 대중적으로 널리 읽혔는데 주로 어떻게 인간이 사업과 정부기관과 비영리단체를 통하여 조직화되는가에 대한 탐구에 관한 내용이었다. 위키백과
  • 피터 드러커
    사업가, 작가
    • 내용을 입력하세요




    plot(s_ts2$apple, type="l") # 그렇다면 잡스의 본부 애플은??? 


    # 아이폰도 잡스도 뜨는데 애플이 질리는 없지... 




    # 여기까지 왔으니 이제는 좀 체계적인 부분에 대한 응용 개시

    # 우선 plot을 사용한 분포에 대해 추세선을 추가하는 작업을 연습

    # 먼저 추세선을 그리기 위해 필요한 참고 자료부터 마련

    # 시계열 자료가 몇개의 data point로 구성된 것인지 부터 확인


    length(s_ts2$iphone)


    # 결과 ::  508  -- 상당히 많은 수의 포인트가 있을 수 밖에 없는 이유는

    #  구글이 제공한 데이터가 주단위였기에


    z <- lm(s_ts2$iphone~ c(1:508) ) # 이제 추세선을 그리기 위한 회귀분석

    # 간단한 구문으로 단순선형회귀분석을 실시

    # 문법은 lm :: linear model , y= s_ts2$iphone (즉, iphone 검색량)

    # x=1~508  (즉, 주 week의 일련번호) -- 1,2,3,~~~ 508


    #  summary(z)  # 회귀분석 결과에 대한 확인  --- 생략


    abline(z) # 플롯에 회귀분석 결과로 생성된 추세선을 반영



    # 여러개의 spike가 보이지만 사실 길게 보면 추세는 지속적인 증가라는 점을 깨닫게 됨


    cor(s_ts2$iphone, s_ts2$apple)  # 이번에는 상관분석을 통해 애플과 아이폰간의 관계 확인

    # 결과 상관계수 ::  0.8473507  # 매우 높은 상관관계를 가지고 있음을 확인

    # 스티브 잡스는 뜨고, 아이폰도, 애플도... 역시 지금은 대세임을 확인

    # 세 가지 키워드 모두가 진정 HOT 함에 차이가 없음


    # 이번에는 시계열 자료를 STL (i.e. Seasonlity and Trend 분석) 을 통해 분해해서 확인

    # 추세 이외에 혹시 계절성도 개입되는 것은 아닌지를 확인 시도


    ts_stl_sjobs <- ts(s_ts1$steve.jobs, frequency=12 )

    # stl() 사용을 위해 먼저 시계열자료형으로 vector를 변환

    # 연간의 반복을 Seasonality로 생각하고 있으니 12개월 월단위 변동으로 지정 (frequency)


    # 이제 준비된 자료를 stl함수에 대입. "per" 의 의미는 periodical 주기성

    stl_sjobs <- stl(ts_stl_sjobs, "per")

    summary(stl_sjobs)


    # 결과를 보면 ...  (아래는 결과. 명령 구문이 아님)



     Call:

     stl(x = ts_stl_sjobs, s.window = "per")


     Time.series components:

        seasonal             trend             remainder        

     Min.   :-1.438384   Min.   : 0.838174   Min.   :-10.02683  

     1st Qu.:-1.279834   1st Qu.: 1.104721   1st Qu.: -0.16094  

     Median :-0.870194   Median : 1.347969   Median :  0.62984  

     Mean   :-0.071241   Mean   : 2.905023   Mean   : -0.02182  

     3rd Qu.:-0.512825   3rd Qu.: 3.048345   3rd Qu.:  1.02355  

     Max.   : 9.718203   Max.   :14.435134   Max.   : 75.93012  

     IQR:

         STL.seasonal STL.trend STL.remainder data 

         0.767        1.944     1.184         1.000

       %  76.7        194.4     118.4         100.0


     Weights: all == 1


     Other components: List of 5

     $ win  : Named num [1:3] 1171 19 13

     $ deg  : Named int [1:3] 0 1 1

     $ jump : Named num [1:3] 118 2 2

     $ inner: int 2

     $ outer: int 0


    STL.seasonal STL.trend STL.remainder data  이 부분을 눈여겨 보기

    STL.seasonal 의 비중이 상대적으로 (trend와 비교) 상당히 높으며,  

    STL.remainder 의 비중도 매우 높음

    # 계절적인 변동이 크게 있는 듯 보이지만, 사실 추세와 계절성 합하더라도

    # 전체의 변동을 설명하는 것은 얼마되지 않아 믿기 곤란하다는 것



    acf(ts_stl_sjobs ) ; pacf(ts_stl_sjobs )

    # 불안감을 해소하기 위해서 이번에는 autocorrelation을 확인

    # ACF, PACF 모두에서 선을 넘지 못하고 있는 패턴을 확인

    # 결국 스티브잡스가 특정 계절에만 인기를 끄는 패턴은 없어 보인다는 것


    # 그렇다면 드러커는 ???


    ts_stl_pdrucker <- ts(s_ts2$peter.drucker, frequency=12 )

    stl_pdrucker <- stl(ts_stl_pdrucker, "per")

    summary(stl_pdrucker )


     Call:

     stl(x = ts_stl_pdrucker, s.window = "per")


     Time.series components:

        seasonal              trend            remainder        

     Min.   :-0.4539913   Min.   : 6.16092   Min.   :-16.77015  

     1st Qu.:-0.2699583   1st Qu.: 8.85038   1st Qu.: -0.95320  

     Median :-0.1375737   Median :10.88711   Median :  0.11877  

     Mean   : 0.0037220   Mean   :12.53593   Mean   : -0.01012  

     3rd Qu.: 0.1906390   3rd Qu.:15.59400   3rd Qu.:  0.86870  

     Max.   : 1.5830914   Max.   :34.21196   Max.   : 64.54827  

     IQR:

         STL.seasonal STL.trend STL.remainder data  

         0.4606       6.7436    1.8219        6.0000

       %   7.7        112.4      30.4         100.0 


     Weights: all == 1


     Other components: List of 5

     $ win  : Named num [1:3] 5081 19 13

     $ deg  : Named int [1:3] 0 1 1

     $ jump : Named num [1:3] 509 2 2

     $ inner: int 2

     $ outer: int 0



    # 약간은 다른 결과
    # 드러커는 진정 계절과 무관하게 꾸준한 인기를 누리고 있었음
    # 그리고 매우 일정하게 추세를 따르고 있었음 ( 스티브 잡스에 비해서)
    # 잡스의 인기는 애플과 아이폰의 핫 뉴스가 뜨는 시점,
    # 그리고 고인의 건강과 유고라는 spike에 따라 흔들릴 수 밖에 없었던 것... ^^;

    acf(ts_stl_pdrucker ) ; pacf(ts_stl_pdrucker ) # 다시 계절성을 한번 더 확인




    # 드러커의 추이에 대해서도 선형 추세선 삽입하는 과정은 마찬가지였음

    plot(s_ts2$peter.drucker, type="l")

    z <- lm(s_ts2$peter.drucker ~ c(1:508) )

    abline(z)



    # 연습용 분석의 주제 자체에 대한 해설 종합:: 

    # [1] 드러커는 진정한 Guru이며 많이 사람들이 오랜동안 관심을 가졌음

    # [2] 그러나 그 인기도 시간이 지나고 유행이 바뀌면서 조금은 퇴색이 될 수 밖에 없음이 세상 이치

    # [3] 요즈음의 세상은 미디어를 통해 이벤트를 만들어 내고 새로운 자극을 계속 던저야 주목 유지가 가능함


    # 이 원리는 모든 마케팅과 비지니스에서 변하지 않는 Fundamental Principle 일 듯


    ------------ [전용준, 2013: 리비젼, 빅 데이터, 데이터 분석, 단순하고 간단한 통계]