とある技術者の徒然草

生産技術者の適当な日記(統計言語Rに関するメモがメイン)

【R言語】相関係数の上位のカラムのみを抜き出して散布図行列

相関係数の高いカラムのみを抜き出して相関行列を作成する

#####Boston housing
rm(list = ls())

library(tidyverse)
library(data.table)
library(scales)
library(VIM)
library(corrr)
library(corrplot)
library(scales)

path <- "C:/Users/************/R/house price/all/"
filename <- "train.csv"
filename2 <- "test.csv"
df_train <- fread(str_c(path,filename), header=T)
df_test <- fread(str_c(path,filename2), header=T)

test_label <- df_test$Id

#train testを統合するためIDを消す
df_train$Id <- NULL
df_test$Id <- NULL

all <- dplyr::bind_rows(df_train,df_test)
VIM::aggr(all,labels = names(all),cex.axis=1,prop=TRUE)

#SalePriceのヒストグラムを確認
all %>% 
  dplyr::filter( !is.na(SalePrice) ) %>% 
  mutate(logPrice = log10(SalePrice)) %>% 
  ggplot(aes(x=logPrice))+
  geom_histogram(bins=30,fill="#009900",colour="black")+
  scale_x_continuous(labels = dollar)

#数値型の列だけ抜き出して相関係数上位15の相関係数マトリックスを作成する
numericVars <- all %>%
  select_if(.,is.numeric)

numericVarsName <- names(numericVars)

#http://keita43a.hatenablog.com/entry/2018/04/10/034230
#NAがある時の相関係数 
cor_all <- cor(numericVars,use="pairwise.complete.obs")

#相関係数上位15のカラム名を抜き出す
as.data.frame(cor_all) -> cor_all2
rownames_to_column(cor_all2) -> cor_all2
cor_all2 %>% 
  select(rowname,SalePrice) %>% 
  mutate(corabs = abs(SalePrice)) %>% 
  arrange(desc(corabs)) %>% 
  dplyr::slice(.,1:15)->cor_sorted

cor_sorted$rowname -> CorHigh

corrplot.mixed(cor_all[CorHigh,CorHigh], tl.col="black", tl.pos = "lt")

f:id:M_taka072:20190327232211j:plain