#-----------
[ 차주강의 주제 ] ==========
시계열 예측 - ARIMA Vs. RF
--------------------[data]----------------------
http://www.statmethods.net/advstats/timeseries.html
http://robjhyndman.com/forecasting/data/
http://robjhyndman.com/software/forecast/
군집화 - k-means
Graph 복습 + labeling
GeoMapping
( http://visualize.tistory.com/57 전희원 ggmap 활용 네이버지도위에그림 )
기술환경 - 툴, 기술, 언어, 적용사례, 대량데이터, 비정형데이터
(특허 분석, 부동산 분석 )
자라섬 or CCTV[수원시] :: 분석 미니 프로젝트 - 3인1조 (1.5일)
--[부동산실거래가 + 건축물대장]
개인별 객관식 시험
[ 연기 대상] ==========
예측모델링 고급 기법 - SVM, GLM logistic
통계분석 기초 - t테스트, F테스트, ANOVA
추천 ::
[ Collaborative Filtering with R : Salem Marafi ]
[ http://www.r-bloggers.com/testing-recommender-systems-in-r/ ]
#-----------------
ggapt06<- read.csv('gg201506매매아파트.csv')
require(RgoogleMaps)
#------------------------
# 예지관 :: , 127.036120
# 돈까쓰 :: 37.300944, 127.036311
# 커피 :: 37.300546, 127.037066
dlat <- c(37.300906, 37.300944, 37.300546 )
dlong <- c(127.036120, 127.036311, 127.037066 )
dlab <- c("교육장", "식당", "휴식처편의점")
dcol <- c("red", "blue", "grey")
dsize <- c(2,1,0.5 )
map_info <- data.frame(dlat, dlong, dlab, dcol, dsize)
names(map_info) <- c( "latitude", "longitude", "label", "color", "pointsize")
#---------------
map.center <- c(37.300485,127.035833)
zoom.level <-17
mymap <- GetMap(center = map.center, zoom = zoom.level, maptype = "roadmap",
format = "png32")
# 점마다의 중요도와 의미에 따라 색상과 크기 조절 가능 (df에 미리 저장해 사용
)
PlotOnStaticMap(mymap, lat = map_info$latitude, lon =map_info$longitude,
destfile = "mymap.point.png", cex = map_info$pointsize, pch =19,
col=map_info$color)
TextOnStaticMap(mymap, lat = map_info$latitude, lon = map_info$longitude,
labels=paste(map_info$label,as.character(map_info$pointsize)), cex=0.8, col =
'blue')
#----------------------
map.center <- c(37.265, 127.0823)
#------------------------
# 예지관 :: , 127.036120
# 돈까쓰 :: 37.300944, 127.036311
# 커피 :: 37.300546, 127.037066
dlat <- c(37.300906, 37.300944, 37.300546 )
dlong <- c(127.036120, 127.036311, 127.037066 )
dlab <- c("교육장", "식당", "휴식처편의점")
dcol <- c("red", "blue", "grey")
dsize <- c(2,1,0.5 )
map_info <- data.frame(dlat, dlong, dlab, dcol, dsize)
names(map_info) <- c( "latitude", "longitude", "label", "color", "pointsize")
#---------------
map.center <- c(37.300485,127.035833)
zoom.level <-17
mymap <- GetMap(center = map.center, zoom = zoom.level, maptype = "roadmap",
format = "png32")
# 점마다의 중요도와 의미에 따라 색상과 크기 조절 가능 (df에 미리 저장해 사용
)
PlotOnStaticMap(mymap, lat = map_info$latitude, lon = map_info$longitude,
destfile = "mymap.point.png", cex = map_info$pointsize, pch =19,
col=map_info$color)
TextOnStaticMap(mymap, lat = map_info$latitude, lon = map_info$longitude,
labels=paste(map_info$label,as.character(map_info$pointsize)), cex=0.8, col =
'blue')
#----------------------
mydata <- c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1)
gadm$mydata <- as.factor(mydata)
# 컬러 선택
col = rainbow(length(levels(gadm$mydata)))
spplot(gadm, "mydata", col.regions=col, main="Provinces Yong Visits")
#------------------
require(sp)
print(load("KOR_adm2.RData"))
# gadm is a large scale polygonal data frame with 229 elements
# south Korea 전체 데이터 셋에서 경기도만으로 범위 한정
gadm_gg <- subset(gadm, NAME_1=='Gyeonggi-do' )
ranindex_value <- c(rep(c(3:7),6),1) # 31번 타이핑이 싫어서 기본을 3으로
ranindex_value[24] <- 7 # 24번째인 수원만 지정해서 값 변경
gadm_gg$ranindexvar <- as.factor(ranindex_value)
# 컬러 선택 -- 레인보우 또는 블루퍼플
library(RColorBrewer)
col <- brewer.pal(8, "Reds")
spplot(gadm_gg, "ranindexvar", col.regions=col, main="Where I am in GG" )
# spplot(gadm_gg, "ranindexvar")
#-----------[실거래 데이터 집계]------
# head(substr(unique(ggapt06$시군구),1,8))
ggapt06$areagrp <- substr(ggapt06$시군구 ,6,8)
require(sqldf)
u1 <- sqldf(' select areagrp,
count(*) as cnttrx
from ggapt06
group by areagrp ')
plot(sort(u1$cnttrx, decreasing=TRUE ) )
# gadm에서의 지역 순서를 기록한 df 생성
gadmseq <- c(1:31)
gadmn2 <- gadm_gg$NAME_2
dfgadmseq <- data.frame(gadmseq, gadmn2 )
u1$gadmareagrpn <- c(6, 8, 11, 13, 12, 10, 9, 7, 17, 5, 4, 22, 24, 23,
1, 2, 3, 27, 28, 29, 30, 18, 31, 26, 25, 16, 19, 21, 20, 14, 15 )
u2 <- sqldf('select a.*, b.*
from dfgadmseq as a left join u1 as b
on a.gadmseq=b.gadmareagrpn ')
# 재사용을 위해 경기 지역 그룹명은 저장
# write.csv(u2, "gadmN2_seq.csv")
require(sp)
print(load("KOR_adm2.RData"))
# gadm is a large scale polygonal data frame with 229 elements
# south Korea 전체 데이터 셋에서 경기도만으로 범위 한정
gadm_gg <- subset(gadm, NAME_1=='Gyeonggi-do' )
ranindex_value <- as.integer((u2$cnttrx * 7 / max(u2$cnttrx)) +1)
gadm_gg$ranindexvar <- as.factor(ranindex_value)
# 컬러 선택 -- 레인보우 또는 블루퍼플
library(RColorBrewer)
col <- brewer.pal(8, "Reds")
spplot(gadm_gg, "ranindexvar", col.regions=col, main="Where I am in GG" )
#-------[ 거래금액 평균 산출] ----------
u3 <- sqldf(' select areagrp,
avg(거래금액만원) as avgsellamt,
median(거래금액만원) as mdnsellamt
from ggapt06
group by areagrp ')
u4 <- sqldf('select a.*, b.*
from u2 as a left join u3 as b
on a.areagrp=b.areagrp ')
ranindex_value <- as.integer((u4$avgsellamt * 7 / max(u4$avgsellamt)) +1)
ranindex_value <- as.integer((u4$mdnsellamt * 7 / max(u4$mdnsellamt)) +1)
gadm_gg$ranindexvar <- as.factor(ranindex_value)
# 컬러 선택 -- 레인보우 또는 블루퍼플
library(RColorBrewer)
col <- brewer.pal(8, "Reds")
spplot(gadm_gg, "ranindexvar", col.regions=col, main="경기도 지역별 아파트 매
매가 - 중위수(2015년6월)" )
# plot(u4$avgsellamt, cex= ((u4$avgsellamt / max(u4$avgsellamt)) + 0.5 ) )
#-------[ m2당 거래금액 평균 산출] ----------
u5 <- sqldf(' select areagrp,
avg(거래금액만원/전용면적m2) as avgm2sellamt
from ggapt06
group by areagrp ')
u6 <- sqldf('select a.*, b.*
from u2 as a left join u5 as b
on a.areagrp=b.areagrp ')
ranindex_value <- as.integer((u6$avgm2sellamt * 7 / max(u6$avgm2sellamt)) +1)
gadm_gg$ranindexvar <- as.factor(ranindex_value)
# 컬러 선택 -- 레인보우 또는 블루퍼플
library(RColorBrewer)
col <- brewer.pal(8, "Reds")
spplot(gadm_gg, "ranindexvar", col.regions=col, main="경기도 지역별 아파트 평
당매매가 - 평균(2015년6월)" )
#---------------------
library(latticeExtra)
col <- brewer.pal(8, "BuPu")
# 패널함수 활용
sp.label <- function(x, label) {list("sp.text", coordinates(x), gadm_gg
$NAME_2)}
NUMB.sp.label <- function(x) {sp.label(x, as.vector(x@data$NUMB))}
make.NUMB.sp.label <- function(x) {do.call("list", NUMB.sp.label(x))}
tps <- list(fontsize=list(text=10), fontcolor=list(text="red"))
trellis.par.set(tps)
spplot(gadm_gg, "ranindexvar", col.regions=col, main="APT 매매가", sp.layout
= make.NUMB.sp.label(gadm_gg))
#-------[지역명 라벨 대신에 수치를 표시 ]--------------
gadm_gg$n3[1:20] <- "UP"
gadm_gg$n3[21:31] <- "Down"
sp.label <- function(x, label) {list("sp.text", coordinates(x), gadm_gg$n3)}
NUMB.sp.label <- function(x) {sp.label(x, as.vector(x@data$NUMB))}
make.NUMB.sp.label <- function(x) {do.call("list", NUMB.sp.label(x))}
tps <- list(fontsize=list(text=10), fontcolor=list(text="red"))
trellis.par.set(tps)
spplot(gadm_gg, "ranindexvar", col.regions=col, main="APT 매매가", sp.layout
= make.NUMB.sp.label(gadm_gg))
#-----------[아파트값 트리 생성 ] -------------
require(party)
ggapt06$areagrp<- as.factor(ggapt06$areagrp)
ct1 <- ctree( 거래금액만원 ~ areagrp+ 전용면적m2 + 층 + 건축년도 ,
data=ggapt06, control=ctree_control(minsplit = 50, maxdepth = 4, minbucket =
20) )
plot(ct1)
ggapt06$predprice <- predict(ct1, data=ggapt06)
# 예측값 대비 실제 거래금액 비율 생성
ggapt06$rpa_price1 <- ggapt06$거래금액만원 / ggapt06$predprice1
u7 <- sqldf(' select areagrp,
median(rpa_price1) as mdn_rpa_price1
from ggapt06
group by areagrp ')
u8 <- sqldf('select a.*, b.*
from u2 as a left join u7 as b
on a.areagrp=b.areagrp ')
ranindex_value <- as.integer((u8$mdn_rpa_price1 * 7 / max(u8$mdn_rpa_price1))
+1)
gadm_gg$ranindexvar <- as.factor(ranindex_value)
# 컬러 선택 -- 레인보우 또는 블루퍼플
library(RColorBrewer)
col <- brewer.pal(8, "Reds")
spplot(gadm_gg, "ranindexvar", col.regions=col, main="경기도 지역별 예상가대
비 거래가 비율 - 중위수(2015년6월)" )
rf1 <- randomForest( 거래금액만원 ~ areagrp+ 전용면적m2 + 층 + 건축년도 ,
data=ggapt06, importance=TRUE, do.trace=100, ntree=200)
plot(rf1, log="y")
varImpPlot(rf1)
ggapt06$predprice1 <- predict(rf1, data=ggapt06)
#-===================[ Time Series Forecasting] ================
myvector <- c(rep(c(1:12), 6))
beer <- read.csv("beer2.csv", header=FALSE)
myts <- ts(beer$V1, start=c(1991, 1), end=c(1995, 8), frequency=12)
plot(myts)
'R 데이터 분석' 카테고리의 다른 글
경기대빅파이 5주 계획 6주 계획 (0) | 2015.07.20 |
---|---|
0714 복습 :: 연관성분석과 군집화 (0) | 2015.07.20 |
실거래가 분석 (0) | 2015.07.13 |
[retail example ] R :: Tree, R, Scoring, cumulative gains chart plotting , AIC oversampling, (0) | 2015.07.11 |
CVS example (0) | 2015.07.09 |