(1) データの用意
まずプロジェクトを作成しておきます。
今回データベースからのデータを使うので、DBIとRMySQLライブラリを入れておきます。
library("DBI", lib.loc="/usr/lib64/R/library") library("RMySQL", lib.loc="/usr/lib64/R/library")
データベースからデータを取るスクリプトを作っておきます。
[MySQL.R]
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
mysql.connect <- function(){ | |
dbconnector <<- dbConnect(dbDriver("MySQL"),dbname="XXXXX",user="YYYYY", password="ZZZZZZ") | |
} | |
mysql.getSelect <- function(){ | |
mysql.data <<- dbGetQuery(dbconnector, "SELECT `attack`, `defence`, `hp`, `exp`, `gold`, `water` FROM `monsters` ") | |
} |
> source('MySQL.R') > mysql.connect() > mysql.getSelect()
スクリプトを作る時に、"<<"はグローバル変数に代入します。
(2) 基本解析
(i) summary
summary関数を使って、その結果をcsvに保存します。
> summary(mysql.data)
> write.csv(summary(mysql.data), file="summary.csv")
(ii) boxplot
> boxplot(mysql.data)
(iii) hist
> hist(mysql.data$attack, col = "orange", main = 'Histgram', labels=T, xlab="range") | ||
(iv) 相関係数行列
> install.packages("psych")
> library(psych)
> pairs.panels(mysql.data)
(v) 無向グラフ
これはpackageで”qgraph"を利用するが、CentOSの場合はyumでライブラリを入れておく必要がある。
# yum install libxml2-devel
# yum install libjpeg-devel
# yum install libpng-devel
> install.packages("qgraph") (時間がかかる)
> library(qgraph)
> qgraph(cor(mysql.data),edge.labels=T)
(vi) ヒートマップ
> cor.plot(cor(mysql.data),numbers=T)
(vii) 主座標分析
> plot(cmdscale(dist(cor(mysql.data))),type="n",xlab="", ylab=""); > text(cmdscale(dist(cor(mysql.data))),rownames(cor(mysql.data)))
これらをスクリプトにしたものが次になります。
[Basic.R]
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
basic.summary <- function(){ | |
summary(mysql.data) | |
write.csv(summary(mysql.data), file="summary.csv") | |
} | |
basic.boxplot <- function(name){ | |
boxplot(name) | |
} | |
basic.hist <- function(name){ | |
hist(name, col = "orange", main = 'Histgram', labels=T, xlab="range") | |
} | |
basic.pairs <- function(name){ | |
pairs.panels(name,hist.col="skyblue",rug=F,ellipses=F,lm=T) | |
} | |
basic.cor <- function(name){ | |
qgraph(cor(name),edge.labels=T,minimum=.2,edge.color="black") | |
} | |
basic.heatmap <- function(name){ | |
cor.plot(cor(name),numbers=T) | |
} | |
basic.cmdscale <- function(name){ | |
plot(cmdscale(dist(cor(name))),type="n",xlab="", ylab=""); | |
text(cmdscale(dist(cor(name))),rownames(cor(name))) | |
} |
参考
http://kusanagi.hatenablog.jp/entry/2014/07/23/220951
0 件のコメント:
コメントを投稿