2017年1月20日金曜日

RStudio(4) 基本データ解析

データをデータベースまたはCSVなどから持ってきて、基本データ解析をします。
(1) データの用意
まずプロジェクトを作成しておきます。
今回データベースからのデータを使うので、DBIとRMySQLライブラリを入れておきます。
library("DBI", lib.loc="/usr/lib64/R/library")
library("RMySQL", lib.loc="/usr/lib64/R/library")

データベースからデータを取るスクリプトを作っておきます。
[MySQL.R]
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` ")
}
view raw MySQL.R hosted with ❤ by GitHub


> 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]
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)))
}
view raw Basic.R hosted with ❤ by GitHub


参考
http://kusanagi.hatenablog.jp/entry/2014/07/23/220951

0 件のコメント:

コメントを投稿