데이터분석2016. 5. 27. 16:56

벌써 5번째 Kaggler Day이군요 쨌든 오늘은 가장 kaggle script중에 가장 많은 관심을 받은 script 하나를 들고 왔습니다. 물론 이문제 또한 kaggle competition이 이루어진 문제구요. 


문제 설명을 하자면,, 가게, 프로모션, 그리고 경쟁자 정보를 가지고 판매량을 예측하는 겁니다. Rossman이라는 브랜드가 있나봅니다 여튼 여기서 아마 competition 문제를 의뢰한거 같구요.    이 회사가 머하는 곳이냐면 7개의 유럽 국가에 3000개의 약국을 운영하고 있는 회사입니다. 현재 Rossmann 가게 매니저들은 미리 6주되기까지 그들의 daily 판매량을 예상하는 일을 받았다고 합니다. 가게 판매는 많은 인자 즉 프로모션, 경쟁 업체, 학교, 그리고 주의 휴일, 계절, 지역특성에 등등 많은 인자에 의해 영향을 받고  수천명의 개별 매니저들과 그들의 특정 환경을 토대로 판매량을 예측하는함에 있어 결과의 정확성은 꽤 변동이 클것이라고 합니다.


그래서!! 캐글에서 Rossman은 독일에 있는 1,115개의 약국의 6개월간의 판매량을 예측하는걸 목표로 한다고 하네요? 신뢰할만한 판매 예측은 가게 매니저에게 생산성과 동기부여를 증가시킬수 있는 효율적인 직원 스케쥴을 만들수 있게 해준다고 하네요. Rossmann이 견고한 예측 모델을 만들도록 도와주면서 우리는 그들에게 고객과 그들의 팀에게 무엇이 가장 중요한지 알려주고자 합니다. 


자 문제 설명은 마쳤구요.. 여기 가보면 데이터셋을 확보할수 있습니다.


데이터셋을 보니 


손님 수, 가게 오픈여부, 주휴일, 학교휴일, 가게타입. assortment(무슨 factor중의 하나겠죠?) 그리고 경쟁업체와의 거리, 그리고 가장가까운 경쟁업체의 오픈 년월일. 프로모션, 프로모션2, 프로모션 주기가 주어져있습니다..


과연 이걸로 얻을수 있을까... 궁금하시죠? 그럼 award를 흠 그러니까 1등한분거는 공개가 안되는거 같으니.. 35k달러의 후보가 될뻔 한 소스를 한번 살펴볼까요.....!!!!



탐색전 분석(Exploratory Analysis)을 해보죠!!


사용한 라이브러리 들이 나오고요 data.table을 사용하여 속도를 높였다고 합니다. 특정 해석을 가능케 하기 위해 unmasked data가 중요하다합니다.


library(data.table)
library(zoo)
## 
## Attaching package: 'zoo'
## 
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(forecast)
## Loading required package: timeDate
## Loading required package: methods
## This is forecast 6.2

저번에는 ggplot을 보았는데 이번엔 ggplot2가 나왔습니다. 그리고 문제에서 주어지는 데이터가 이번엔 아예 test / train 으로 나뉘어져 있군요. 그리고 별도로 store라는 데이터셋이 있어서 가게 대장 정보가 별도로 잇네요.

library(ggplot2)
test <- fread("../input/test.csv")
train <- fread("../input/train.csv")
store <- fread("../input/store.csv")

아래는 입력받은 데이터셋을 간략하게 보기 좋은 함수죠~~

str(train)
## Classes 'data.table' and 'data.frame':   1017209 obs. of  9 variables:
##  $ Store        : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ DayOfWeek    : int  5 5 5 5 5 5 5 5 5 5 ...
##  $ Date         : chr  "2015-07-31" "2015-07-31" "2015-07-31" "2015-07-31" ...
##  $ Sales        : int  5263 6064 8314 13995 4822 5651 15344 8492 8565 7185 ...
##  $ Customers    : int  555 625 821 1498 559 589 1414 833 687 681 ...
##  $ Open         : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Promo        : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ StateHoliday : chr  "0" "0" "0" "0" ...
##  $ SchoolHoliday: chr  "1" "1" "1" "1" ...
##  - attr(*, ".internal.selfref")=<externalptr>
str(test)
## Classes 'data.table' and 'data.frame':   41088 obs. of  8 variables:
##  $ Id           : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Store        : int  1 3 7 8 9 10 11 12 13 14 ...
##  $ DayOfWeek    : int  4 4 4 4 4 4 4 4 4 4 ...
##  $ Date         : chr  "2015-09-17" "2015-09-17" "2015-09-17" "2015-09-17" ...
##  $ Open         : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Promo        : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ StateHoliday : chr  "0" "0" "0" "0" ...
##  $ SchoolHoliday: chr  "0" "0" "0" "0" ...
##  - attr(*, ".internal.selfref")=<externalptr>
str(store)
## Classes 'data.table' and 'data.frame':   1115 obs. of  10 variables:
##  $ Store                    : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ StoreType                : chr  "c" "a" "a" "c" ...
##  $ Assortment               : chr  "a" "a" "a" "c" ...
##  $ CompetitionDistance      : int  1270 570 14130 620 29910 310 24000 7520 2030 3160 ...
##  $ CompetitionOpenSinceMonth: int  9 11 12 9 4 12 4 10 8 9 ...
##  $ CompetitionOpenSinceYear : int  2008 2007 2006 2009 2015 2013 2013 2014 2000 2009 ...
##  $ Promo2                   : int  0 1 1 0 0 0 0 0 0 0 ...
##  $ Promo2SinceWeek          : int  NA 13 14 NA NA NA NA NA NA NA ...
##  $ Promo2SinceYear          : int  NA 2010 2011 NA NA NA NA NA NA NA ...
##  $ PromoInterval            : chr  "" "Jan,Apr,Jul,Oct" "Jan,Apr,Jul,Oct" "" ... 
##  - attr(*, ".internal.selfref")=<externalptr>
# head(train); tail(train)
# head(test); tail(test)
train[, Date := as.Date(Date)]
test[, Date := as.Date(Date)]
store
##       Store StoreType Assortment CompetitionDistance
##    1:     1         c          a                1270
##    2:     2         a          a                 570
##    3:     3         a          a               14130
##    4:     4         c          c                 620
##    5:     5         a          a               29910
##   ---                                               
## 1111:  1111         a          a                1900
## 1112:  1112         c          c                1880
## 1113:  1113         a          c                9260
## 1114:  1114         a          c                 870
## 1115:  1115         d          c                5350
##       CompetitionOpenSinceMonth CompetitionOpenSinceYear Promo2
##    1:                         9                     2008      0
##    2:                        11                     2007      1
##    3:                        12                     2006      1
##    4:                         9                     2009      0
##    5:                         4                     2015      0
##   ---                                                          
## 1111:                         6                     2014      1
## 1112:                         4                     2006      0
## 1113:                        NA                       NA      0
## 1114:                        NA                       NA      0
## 1115:                        NA                       NA      1
##       Promo2SinceWeek Promo2SinceYear    PromoInterval
##    1:              NA              NA                 
##    2:              13            2010  Jan,Apr,Jul,Oct
##    3:              14            2011  Jan,Apr,Jul,Oct
##    4:              NA              NA                 
##    5:              NA              NA                 
##   ---                                                 
## 1111:              31            2013  Jan,Apr,Jul,Oct
## 1112:              NA              NA                 
## 1113:              NA              NA                 
## 1114:              NA              NA                 
## 1115:              22            2012 Mar,Jun,Sept,Dec
train <- train[order(Date)]
test <- test[order(Date)]
summary(train)
##      Store          DayOfWeek          Date                Sales      
##  Min.   :   1.0   Min.   :1.000   Min.   :2013-01-01   Min.   :    0  
##  1st Qu.: 280.0   1st Qu.:2.000   1st Qu.:2013-08-17   1st Qu.: 3727  
##  Median : 558.0   Median :4.000   Median :2014-04-02   Median : 5744  
##  Mean   : 558.4   Mean   :3.998   Mean   :2014-04-11   Mean   : 5774  
##  3rd Qu.: 838.0   3rd Qu.:6.000   3rd Qu.:2014-12-12   3rd Qu.: 7856  
##  Max.   :1115.0   Max.   :7.000   Max.   :2015-07-31   Max.   :41551  
##    Customers           Open            Promo        StateHoliday      
##  Min.   :   0.0   Min.   :0.0000   Min.   :0.0000   Length:1017209    
##  1st Qu.: 405.0   1st Qu.:1.0000   1st Qu.:0.0000   Class :character  
##  Median : 609.0   Median :1.0000   Median :0.0000   Mode  :character  
##  Mean   : 633.1   Mean   :0.8301   Mean   :0.3815                     
##  3rd Qu.: 837.0   3rd Qu.:1.0000   3rd Qu.:1.0000                     
##  Max.   :7388.0   Max.   :1.0000   Max.   :1.0000                     
##  SchoolHoliday     
##  Length:1017209    
##  Class :character  
##  Mode  :character  
##                    
##                    
## 
summary(test)
##        Id            Store          DayOfWeek          Date           
##  Min.   :    1   Min.   :   1.0   Min.   :1.000   Min.   :2015-08-01  
##  1st Qu.:10273   1st Qu.: 279.8   1st Qu.:2.000   1st Qu.:2015-08-12  
##  Median :20544   Median : 553.5   Median :4.000   Median :2015-08-24  
##  Mean   :20544   Mean   : 555.9   Mean   :3.979   Mean   :2015-08-24  
##  3rd Qu.:30816   3rd Qu.: 832.2   3rd Qu.:6.000   3rd Qu.:2015-09-05  
##  Max.   :41088   Max.   :1115.0   Max.   :7.000   Max.   :2015-09-17  
##                                                                       
##       Open            Promo        StateHoliday       SchoolHoliday     
##  Min.   :0.0000   Min.   :0.0000   Length:41088       Length:41088      
##  1st Qu.:1.0000   1st Qu.:0.0000   Class :character   Class :character  
##  Median :1.0000   Median :0.0000   Mode  :character   Mode  :character  
##  Mean   :0.8543   Mean   :0.3958                                        
##  3rd Qu.:1.0000   3rd Qu.:1.0000                                        
##  Max.   :1.0000   Max.   :1.0000                                        
##  NA's   :11

데이터가 흠 가게 Id는 정수형이고 다 주 5일제고 뭐...손님수는 다양하네요 500~1500명까지.... 휴일여부는 0,1로 나뉘어져있고 네..

여튼 데이터 구경은 이정도면 충분하고. 넘어갑니다.   그리고 summary함수를 통해서 또 최대/최소/최빈값등등을 보면서 대략적이나마 data distribution 형태를 좀 예측할 수 가 있지요... 




앗!!! 다음에 이어하겠습니다.

좀 더 해야하는데.. 다음 6일차때 추가하겠습니다.






























'데이터분석' 카테고리의 다른 글

Kaggler's Day #8  (0) 2016.06.10
Kaggler's Day #7  (0) 2016.06.08
Kaggler's Day #6  (0) 2016.05.31
Kaggler's Day #3  (0) 2016.05.16
Kaggler's Day #1  (0) 2016.05.12
Posted by 억사마
카테고리 없음2016. 5. 26. 18:33

Kaggler 4번째 시도입니다. 이번에는 RF(Random Forest)를 가지고 Facebook competition에서 Awards를 받은 팀의 스크립트에 대해서 정리하고자 합니다. 


간단하게 문제는 페이스북데이터(평방 10km 그리드안에 약 30만개의 check-ins 정보)가 주어지고 시공간 정보에 의존하여 유저가 무슨 비지니스에 체크인하는지를 파악하는 문제이라고 합니다. 웃긴 부분은 place id를 기준으로 분류하면 100k 개의 종류가 있어서 대부분의 supervised learning 기술은 전체 dataset에서 안먹힐 거라고 합니다. 하지만 다행히 대부분의 종류들이 그리드의 특정 지역에서 cluster가 되어서 여기 팀은 그리드안의 작은 직사각형을 선택해서 그 범위안에서 검증을 해보았다고 합니다. 그래서 더 작은 스퀘어에서 약간의 실험적인 데이터 분석을 하고나면 예측을 위해서 random forest를 사용하여 결과 분석할 것이다라고 합니다.


아래는 사용한 라이브러리


library(data.table) #reading in the data
library(dplyr) #dataframe manipulation
library(ggplot2) #viz
library(ranger) #the random forest implementation
library(plotly) #3D plotting
library(tidyr) #dataframe manipulation

fb에 training dataset을 집어넣습니다.

fb <- fread("../input/train.csv", integer64 = "character", showProgress = FALSE)

그리고 나서 아까 말한 부분집하을 데이터에 선택합니다. 그 기준은  250 x 250meters 크기의 특정 직사각형의 데이터를 뽑고


fb %>% filter(x >1, x <1.25, y >2.5, y < 2.75) -> fb
head(fb, 3)
##    row_id      x      y accuracy   time   place_id
## 1:    600 1.2214 2.7023       17  65380 6683426742
## 2:    957 1.1832 2.6891       58 785470 6683426742
## 3:   4345 1.1935 2.6550       11 400082 6889790653

place_id와 시간, x,y는 좌표일테고... 그리고 accuracy는 뭘까요? 



small_train = fb[fb$time < 7.3e5,]
small_val = fb[fb$time >= 7.3e5,] 

여튼 kaggle에서 test 데이터로 돌려서 scoring을 할텐데 좀 더 유사하기 위해서 최근 데이터를 validation으로 두었다고 합니다.


자 분석을 시작해봅시다!!!


ggplot(small_train, aes(x, y )) +
    geom_point(aes(color = place_id)) + 
    theme_minimal() +
    theme(legend.position = "none") +
    ggtitle("Check-ins colored by place_id")




그림이 이쁘게 plotting이 ggplot으로 그려지긴 하나 겹쳐지는 부분이 꽤 있어 보여서 place_id군들이 잘 구분이 안되어질거 같습니다. 그래서!!! 공간에 시간 개념을 넣어서 plot을 그려보자고 하는군요... 즉 x,y말고도 3차원을 만들기위해 z좌표로 hour을 쓰겠다는거군요.. 여튼 아래 소스로 직접 보면 우선 500개 이하인 place_id들은 날리고 place_id list를 ids에 담네요 그리고 small_trainz라는 subset을 만듭니다. 그리고 그걸로 그리는데...


small_train %>% count(place_id) %>% filter(n > 500) -> ids
small_trainz = small_train[small_train$place_id %in% ids$place_id,]

plot_ly(data = small_trainz, x = x , y = y, z = hour, color = place_id,  type = "scatter3d", mode = "markers") %>% layout(title = "Place_id's by position and Time of Day")

type을 scatter3d로 줘서 그런지 이쁘네요...  kaggle에서 plot을 못가져오겠네요. 동적이라서!!!  여기에서 직접 보세요..

그렇지만 캡쳐해서 올리면.. 이렇습니다. 캬..




 중간에 Place_id's by position and Time of Day라고.. 차트가 hovering하면 3차원의 plot을 동적으로 보여주네요.. ㄷㄷㄷ  시간단위는 먼지 모르겠지만 여튼... hour를 넣고 안겹치게 잘 그려지네요!! 와우!! 시간 dimension을 넣었더니 이렇게 clear가 되는군요..  특정 지점에서 체크인이 몇시간 동안 멈췄다가 다시 체크인이 이뤄지고 있는 모습도 보이고요. 어떤 비지니스들은 꽤 낮 내내 높은 사용률이 보이고 비지니스마다 꽤 서로 다른 peaks를 가지고 있는 경향이 있네요. 또한 z=0과 z=24인 시점은 같은 것이라는 것도 유의해서 3d plot을 보라고 하는군요.  

 

하지만 아직 우리는 매우 많은 클래스들이 있습니다. (아까 많이 제외를 했기때문에..)

다시 small_train set을 가지고 와서 unique로 종류를 보면 770개의 business들이 있고요. 

length(unique(small_train$place_id))
## [1] 770

여기에서 빈도가 낮은 녀석들은 날리고 ...  3개 이하로 일어나는것들은 날리면 종류가 그래도 많이 준다고 합니다.  우리는 validation set을 가지고 있기 때문에 우리는 항상 다시 돌아와서 filter level을 조절할수 있죠. 더 나은 정교한 모델을 만들기 위해서 말이지요~~



small_train %>% count(place_id) %>% filter(n > 3) -> ids
small_train = small_train[small_train$place_id %in% ids$place_id,]

이렇게 필터링하고 나면 15595 트레이닝 샘플과 224개의 클래스를 가지고 이제 ML을 할 준비를 했다고 합니다..... 자 숲으로!!



원래 RF보다 ranger라는모듈(별도의 RF를 구현)을 사용했다고 합니다. 약 5배의 빠른 성능과 메모리 효율성이 좋다고 합니다. 여튼 이건 중요한 얘긴 아니고..

seed는 넘어가고 place_id를 classification의 factor로 사용을 했고 ranger를 이용하여 model_rf라는 RF모듈을 만드네요.  x와 y, accuracy, hour를 넣고 돌립니다. 그리고 random sampling은 100개를 해서 decision tree를 만드네요.


set.seed(131L)
small_train$place_id <- as.factor(small_train$place_id) # ranger needs factors for classification
model_rf <- ranger(place_id ~ x + y + accuracy + hour,
                   small_train,
                   num.trees = 100,
                   write.forest = TRUE,
                   importance = "impurity")
## Growing trees.. Progress: 48%. Estimated remaining time: 33 seconds.
pred = predict(model_rf, small_val)
pred = pred$predictions
accuracy = mean(pred == small_val$place_id) 

오래 걸리는군요.  만든 모델을 가지고 실제 small_val에서 돌려보면 accuracy가 0.5240919라고 하네요. 나쁘지 않다고 합니다. 물론 처음치고 나쁜 건 아니죠.  이 competition의 평가 metric은 3개의 test set의 mean average precision이라고 하네요. 그래서 class에 의한 votes/probabilities을 예측하고 점수를 개선하기 위해 보증된 top 3개의 id를 카운팅한다?? 뭔말인지.. 여튼.. 넘어갑니다 ㅡ.ㅡ


small_val$Correct = (pred == small_val$place_id)

ggplot(small_val, aes(x, y)) +
    geom_point(aes(color = Correct)) + 
    theme_minimal() +
    scale_color_brewer(palette = "Set1") +
    ggtitle("RF Results")



위의 plot은 모델을 가지고 우리가 맞은것과 틀린것을 표시한건데 accuray가 50% 살짝 넘엇었죠?보기에 correct한 checkin이 더 클러스터링이 된거 같다고 합니다. uncorrect한건 보면 균일하게 분배되어있는거 같고. 


그래서.. 어떤 종류의 RF가 잘못되는지 보자고 합니다. 이를 위해서 우리는 id별 accuracy를 보고 또한 id기준의  plot, validation set에 그것들이 얼마나 자주 나타나는지를 기준으로 한 걸 나타낼려고 합니다. 이 모델이 더 인깅가 있을 수록 더 정확하고 아닐 경우는 accuracy가 줄어드는걸 확인할수 있네요.. 봅시다.


#reordering the levels based on counts:
small_val$place_id <- factor(small_val$place_id,
                             levels = names(sort(table(small_val$place_id), decreasing = TRUE)))

small_val %>% 
    ggplot(aes(x = place_id)) + geom_bar(aes(fill = Correct)) + 
    theme_minimal() +
    theme(axis.text.x = element_blank()) +
    ggtitle("Prediction Accuracy by ID and Popularity") +
    scale_fill_brewer(palette = "Set1")


그럼 변수들의  중요성을.. 또한 보면...

data.frame(as.list(model_rf$variable.importance)) %>% gather() %>% 
    ggplot(aes(x = reorder(key, value), y = value)) +
    geom_bar(stat = "identity", width = 0.6, fill = "grey") +
    coord_flip() +
    theme_minimal() +
    ggtitle("Variable Importance (Gini Index)") +
    theme(axis.title.y = element_blank()) 


 흥미로운 점은 x보다 y가 중요하다는 것. 이건 다른 스크립트에서도 많이 관찰이 된다. place_id의 variaince는 y방향보다 x방향에서 더 크다. 이것은 y축이 더 place_id의 predictior로 좋고  RF가  그 스스로 이것을 알아낸다라는 것이다. hour또한 좋은 predictor이고 공간적인 지표보다는 못하다.  마지막으로 accuracy가 중요하다고 하빈다. 이것은 좀 미스테리하다고 합니다. 왜냐하면 우리는 실제 정의를 얻지 못하나 모델은 이게 중요하다고 한다. 마지막까지도... accuracy의 변수가 데이터에서 뭘 뜻하는지 모르고 종료합니다.


그리고.... 여기 아이디어에서 추가로 제안을 아래와 같이 하네요. 이것은 귀찮으니 걍 영어로... --a

한마디로 뭐.. grid사이즈를 다르게 주거나 다른 모델을 써보자는 얘기죠...


Here are a few sugesstions:

  • play with how big the grid size is and see if you can get better validation results
  • try different areas on the map
  • try different models (maybe xgboost or somehing simple like logistic regression)
  • split the grid into n*n little squares and run you algorithm in each of the squares - this might take a while though.




이상입니다.

Posted by 억사마
데이터분석2016. 5. 16. 11:36

Kaggler가 되어도 분석할 데이터, 도메인 지식이 없으면 아무 소용이 없다. 그래서 Kaggler가 되기 위한 시도로써 또 나는 분석할 대상, 도메인 지식도 쌓고 그리고 관련 데이터도 어디서 확보하면 좋을까를 목표로 또 하나의 습관을 들이기로 한다.


데이터 도메인은 부동산쪽이며 주제는 아파트가격 분석이 되겠다. 예측까지가면 좋을것 같지만 우선 과거 데이터를 가지고 분석정도를 목표로 한다. 


RAW 데이터 source는 다음이 되겠다.

국토부 실거래사이트(rt.molit.go.kr)  

 realtime은 아니지만 최대 3달 이내의 실거래가 데이터를 얻을수 있다. 동호수까지는 모르는게 단점

 한국산업단지공단( )www.kicox.or.kr) :

 인구 유입율

 부동산114(or 닥터아파트)

 매년 아파트 브랜드 선호도 발표 

 www.apt2you.com 

 청약접수 경쟁률 조회

 통계청 국가포털(http://kosis.kr) / 통계청 http://kostat.go.kr

 

 서울시 재개발/재건축 클린업시스템 cleanup.seoul.go.kr

 


아래는 데이터 분석 관련 통계청 데이터 목록 


1. 가계동향조사 : 가구의 생활수준실태와 그 변동사항을 파악하기 위해서 가계의 수입과 지출을 조사하여 - 국민소비수준 변화의 측정 및 분석 - 소비자물가지수 편제에 필요한 가중치 모집단 자료 등 각종 경제, 사회정책에 필요한 자료를 제공 - 공공사업 시행으로 인한 세입자의 주거대책비 산정 및 국민주택 공급대상의 기준설정 자료


2. 장래인구추계 : 2010년 인구주택총조사 결과를 기초로, 인구동태(출생․사망)와 국제인구이동통계를 활용, 코호트 요인법 ( Cohort components method)에 의해 2060년까지 향후 50년간의 인구규모 및 성․연령별 구조를 추계 ㅇ 2010년 인구주택총조사(11월 1일자)의 성․연령별 인구 보정 - 성․연령별 기준인구(2010년 7월 1일자) 확정 - 인구변동요인(출생․사망․국제이동) 분석 - 출산력․사망력․국제이동 모형 및 장래 변동 수준에 대한 가정설정 - 가정별 인구추계 시산 및 결과 분석


3. 국내인구이동통계 : 인구 이동 상황을 주기적으로 파악하여 인구정책 및 지역간 균형개발을 위한 기초자료로 활용


4. 한국도시통계 : - 전국 시·읍의 인구, 재정, 건설, 사회복지 및 문화 등 각 분야의 주요통계 자료를 수록하여 도시 변화양태 파악 및 도시행정을 위한 기초자료 제공 - 중앙부처, 지방자치단체, 유관기관 등에서 도시행정 수행에 활용


5. 노인(65세 이상)의 연간 총수입, 소득항목별 금액 및 구성비 

  - 일반특성별 (30개)

:전체, 지역별, 동부, 읍·면부, 성별, 남자, 여자, 연령별, 65~69세, 70~74세.....

- 소득항목별 (8개)

: 총수입, 근로소득, 사업소득, 재산소득, 사적이전소득, 공전이전소득, 기타수입, 기타소득

- 항목 (2개)

: 금액, 구성비



6.  각종 지수(통계청 발표)

    아파트 실거래가격지수(2006.1=100.0) 수록주기 월 2006.01~2016.03  아파트 실거래가격지수(2006.1=100.0) 파일 다운로드  아파트 실거래가격지수(2006.1=100.0) 구성정보

    규모별 아파트 실거래가격지수 전월대비 증감률(%) 수록주기 월 2006.02~2016.02  규모별 아파트 실거래가격지수 전월대비 증감률(%) 파일 다운로드  규모별 아파트 실거래가격지수 전월대비 증감률(%) 구성정보

    규모별 아파트 실거래가격지수(2006.1=100.0) 수록주기 월 2006.01~2016.02  규모별 아파트 실거래가격지수(2006.1=100.0) 파일 다운로드  규모별 아파트 실거래가격지수(2006.1=100.0) 구성정보

    아파트 실거래가격지수 전월대비 증감률(%) 수록주기 월 2006.02~2016.03  아파트 실거래가격지수 전월대비 증감률(%) 파일 다운로드  아파트 실거래가격지수 전월대비 증감률(%) 구성정보

 부동산시장 소비자심리  

    부동산시장 소비심리지수 수록주기 월 2011.07~2016.03  부동산시장 소비심리지수 파일 다운로드  부동산시장 소비심리지수 구성정보

    주택시장 소비심리지수 수록주기 월 2011.07~2016.03  주택시장 소비심리지수 파일 다운로드  주택시장 소비심리지수 구성정보

    주택매매시장 소비심리지수 수록주기 월 2011.07~2016.03  주택매매시장 소비심리지수 파일 다운로드  주택매매시장 소비심리지수 구성정보

    주택전세시장 소비심리지수 수록주기 월 2011.07~2016.03  주택전세시장 소비심리지수 파일 다운로드  주택전세시장 소비심리지수 구성정보





UPDATE ( 2016.05.27. "아는만큼 번다 돈이 되는 빅데이터" 책 내용 추가)


데이터를 다루는 기본 지식

비(ratio) : 분자 / 분모 독립적

비율(proportion)  : 분자가 분모에도 포함

율(rate) : 시간개념이 같이 있어 "속도"개념이 추가된 것.

기저효과(base effect) : 기준/비교 시점의 차이로 왜곡이 되는 현상.

%, %p : p가 붙으면 퍼센테이지의 차이를 얘기한다.

INDEX는 기준시점 + 가중치 + 지수식으로 결정


한국은행 경제 통계시스템

 국가별 통화량 추이(M1,M2) 가계부채상황, 부채지표등 각종 지표 파악 가능

 ※ 처분가능소득 대비 금융부채 비율, 처분가능소득 대비 원리금 상환액 비율등...

 온나라 부동산 정보종합포탈 

 행정구역별 최초 주택 거래량, 월별 매입자 거주지별(실거주자와 매입자의 일치 여부)

 월별 거래주체별 / 거래규모별 / 건물유형별 

 한국거래소

 

 금융투자협회 전자공지서비스

 

 KB부동산 알리지

 

 R-ONE 부동산통계정보시스템

 상업용 부동산 거래 정보, 미분양 정보(준공후 미분양까지), 연령별(아파트나이별)매매가격지수, 자가점유비율, 자가보유율(주택 보유 가구 / 일반가구수)












'데이터분석' 카테고리의 다른 글

Kaggler's Day #8  (0) 2016.06.10
Kaggler's Day #7  (0) 2016.06.08
Kaggler's Day #6  (0) 2016.05.31
Kaggler's Day #5  (0) 2016.05.27
Kaggler's Day #1  (0) 2016.05.12
Posted by 억사마