Mais conteúdo relacionado
Semelhante a 20181114 r (20)
Mais de Yutaka Terasawa (12)
20181114 r
- 4. Rとは??
3
R Excel
利用用途 統計解析 表計算から資料作成まで多様
コスト 無料 有料(数万円)
扱えるデータの量
○
(150万行の読み込みも可)
×
(1,048,576行、16,384列)
GUI △ ○
オープンソースソフトウェアの統計解析ソフトウェア
✓ 大規模データを分析する際に効率的
✓ Excelではできないクラスター分析やバスケット分析などの統計解析が可能
✓ Excelだと項目設定が面倒なグラフもスピーディーに出力することが可能
■Excelとの比較
- 10. サンプルデータ
9
自転車シェアリングの利用者数データ(731行)
目的変数 説明変数
数値 数値 カテゴリー
利用者数 気温 体感気温 湿度 風速 季節 年 月 祝日 曜日 休日 天気
cnt temp atemp hum windspeed season Yr Mnth Holiday weekday workingday weathersit
985 0.344167 0.363625 0.805833 0.160446 1:春 0:2011 3 0:祝日以外 6:土 0:休日 1:晴・曇
801 0.363478 0.353739 0.696087 0.248539 1:春 0:2011 4 0:祝日以外 0:日 0:休日 2:小雨
1349 0.196364 0.189405 0.437273 0.248309 2:夏 0:2011 7 0:祝日以外 1:月 1:休日以外 1:晴・曇
1562 0.2 0.212122 0.590435 0.160296 2:夏 0:2011 8 0:祝日以外 2:火 1:休日以外 1:晴・曇
1600 0.226957 0.22927 0.436957 0.1869 3:秋 1:2012 10 1:祝日 3:水 0:休日以外 4:大雨
1606 0.204348 0.233209 0.518261 0.0895652 3:秋 1:2012 11 1:祝日 4:木 0:休日以外 4:大雨
1510 0.196522 0.208839 0.498696 0.168726 4:冬 1:2012 12 1:祝日 5:金 0:休日以外 1:晴・曇
959 0.165 0.162254 0.535833 0.266804 4:冬 1:2012 1 1:祝日 6:土 1:休日 3:雨・雪
- 17. 教師データ・テストデータの作成
16
# 教師データ ランダム抽出
train.data <- dataset[sample(nrow(dataset), floor(nrow(dataset)*0.7)),]
# テストデータ 教師データ以外のデータを抽出
test.data <- dataset
test.data <- test.data[!(rownames(test.data) %in% rownames(train.data)),]
ランダム抽出
- 18. モデル作成
17
train.data.lm <- lm(cnt~., data=train.data)
model1 <- stepAIC(train.data.lm)
summary(model1)
lm関数を使ってモデル作成
自由度調整済み決定係数
切片
偏回帰係数
P値気温
天気(小雨)
天気(雨・雪)
重回帰分析
𝒀 = 𝒂 𝟏 𝒙 𝟏 + 𝒂 𝟐 𝒙 𝟐 + 𝒂 𝟑 𝒙 𝟑 + 𝒃
偏回帰係数 切片
- 21. モデル評価
20
real <- data.frame(test.data$cnt)
pred <- round(predict(model1, newdata=test.data), 3)
compare <- data.frame(real, pred, pred-real, real/pred)
colnames(compare) <- c("実績値", "予測値","残差","実績値/予測値")
compare
predict関数を使ってモデル評価
write.csv(compare,file = "result.csv")
CSV出力も可能です
- 22. やってみたこと
21
#ファイル読み込み
dataset <- read.csv("bike.csv", header=T)
#データがインポートされたことを確認
head(dataset,10)
# 必要なパッケージをインストール
#install.packages("MASS")
#install.packages("ggplot2")
#install.packages("dplyr")
#install.packages("GGally")
# 必要なライブラリを読み込み
library(MASS)
library(ggplot2)
library(scales)
library(dplyr)
library(GGally)
library(dplyr)
#カテゴリーデータをファクター型に変換
dataset.cat <- dataset %>% select(season:weathersit) %>% mutate_each(funs(factor))
dataset <- cbind(dplyr::select(dataset, cnt:hum, windspeed), dataset.cat)
#基本統計量
summary(dataset)
#分散
var(dataset$cnt)
#標準偏差
sd(dataset$cnt)
#四分位偏差
IQR(dataset$cnt)
#グラフ化
boxplot(dataset$cnt,col="blue")
hist(dataset$cnt,col="blue")
#ライブラリを使った作図
ggplot(dataset, aes(y=cnt, x=season,fill=season)) +geom_boxplot(alpha=1,colour="gray30")
ggplot(data=dataset, aes(x =cnt)) + geom_bar(stat = "bin", fill="blue",colour="black") + facet_wrap(~season, ncol =
1)
#モデル作成
#教師データ ランダム抽出
train.data <- dataset[sample(nrow(dataset), floor(nrow(dataset)*0.7)),]
#テストデータ 教師データ以外のデータを抽出
test.data <- dataset
test.data <- test.data[!(rownames(test.data) %in% rownames(train.data)),]
train.data.lm <- lm(cnt~., data=train.data)
model1 <- stepAIC(train.data.lm)
summary(model1)
# モデル評価
predict(model1, newdata=test.data)
real <- data.frame(test.data$cnt)
pred <- round(predict(model1, newdata=test.data), 3)
compare <- data.frame(real, pred, pred-real, real/pred)
colnames(compare) <- c("実績値", "予測値","残差","実績値/予測値")
compare
write.csv(compare,file = "result.csv")
■基本統計量の算出
■グラフ作成
■利用者予測