目次
05.Google Colaboratoryで自前データでRで統計
前回の04.GoogleColaboratoryでRプログラミングでは、GoogleColaboratory上で、Rプログラミングを行う方法を紹介しました。流れとしては、
- GoogleColaboratoryで『PYTHON3の新しいノートブック』を作成
- GoogleDriveで上記ipynbファイルを『Text Editor for Drive』で開き、
"kernelspec":{"name":"ir","display_name":"R"}
に変更 - GoogleColaboratoryで再度、上記ipynbファイルを開く
となります。
今回は、自前のエクセルデータをGoogleColaboratory上にアップロードして、Rで統計解析を行いたいたいと思います。
エンコードの注意点 UTF8とShiftJIS
https://shohei-doi.github.io/quant_polisci/encoding-r.html
第23章 Rのエンコーディング問題
Windowsでエクセルをcsvで保存すると、基本的には Shift-JISでエンコードされる。→MacやColaboratoryで開くと文字化けする
Windowsでエクセルをcsv(UTF-8形式)で保存すると、MacやColaboratoryで開くことができるが、WindowsのRStudioで開くと文字化けする
ソースコード
開発環境
Windows10 Pro (1803) (OSは何でもよいです)
Chrome
Googleアカウント
GoogleDriveで『Text Editor for Drive』を利用(→方法はこちらをご覧ください。)
自前データの用意
今回、自前のデータとして、以下のエクセルファイルを用いてみます。
book1.xlsx (←クリックでダウンロードできます。)
Rで統計する際の自前データの記載方法については、03.Excelでcsv形式でデータを保存をご覧頂けましたら幸いです。半角英数字とピリオドのみを用いて記載していただくのがお勧めです。
新規ipynbファイルの作成とRを利用するための編集
GoogleColaboratoryへ行き、Googleアカウントでログインし、『PYTHON3の新しいノートブック』をクリックして、新規ipynbファイルを作成します。
以下のように、ファイル名を変更し(今回は、191013_001.ipynb に変更します)、Enterを押した後、Ctrl+S で保存します。
https://drive.google.com/drive/my-drive へ行き、先ほど作成したipynbファイル(今回は、191013_001.ipynb)を右クリック > 『アプリで開く』 > 『Text Editor for Google Drive』の順にクリック
"kernelspec":{"name":"python3","display_name":"Python 3"}
となっている部分を、
"kernelspec":{"name":"ir","display_name":"R"}
に変更します。
下の方へ行き、『Save』をクリックします。何か聞かれるので、『OK』を2回押します。
タブの『×』をクリックして、閉じます。
GoogleDriveの画面で、191013_001.ipynb を右クリック > 『アプリで開く』 > 『Google Colaboratory』の順にクリックして、Rを利用できるようになります。
Rが利用できるか確認のため、以下のコードを入力して、Shift + Enter を押します(または、左側の▲をクリックします)。
library(tidyverse)
なんか10秒くらいかかったりしますが、以下のようになれば、Rが使用できるようになっている状況です。(Google Colaboratoryでは、デフォルトで、“tidyverse”というパッケージがインストールされています。Windowsで自分のパソコンにRStudioをインストールした場合は、自分で“tidyverse”パッケージをインストールする必要があります。)
自前データのアップロードとread_excel()によるエクセルデータのRへの取り込み
今回、Rに取り込みたい自前データbook1.xlsxを、デスクトップに保存しておくものとします。
画面左上の『>』をクリックして、左側からタブのような画面を引き出します。
『ファイル』をクリック。
『アップロード』をクリック。
book1.xlsx を選択して、『開く』をクリック。
左側の画面に、book1.xlsxが表示されるので、右側のコードを入力する画面に以下を入力して、Shift+Enterを押して実行します。
library(readxl) data_xlsx <- read_excel("book1.xlsx", sheet=1) data_xlsx
コメントで説明を入れると、以下のようになります。
# read_excel()関数を使用するための準備 library(readxl) # data_xlsx に、book1.xlsxの1番目のsheetをtibbleデータとして代入する data_xlsx <- read_excel("book1.xlsx", sheet=1) # data_xlsx を表示する data_xlsx
これで、自前のエクセルデータをGoogle ColaboratoryでRのデータとして取り込むことができました。
取り込んだデータで解析してみる
今回、data_xlsx という『オブジェクト』に、エクセルデータを代入しています。オブジェクトという言葉は私もよくわかっていません。とりあえず、『モノ』ということでお願いします。
オブジェクトの内容を情報付きで簡潔に表示する場合は関数 str() を用います。
str(data_xlsx)
データの要約が欲しい場合は関数 summary() を用います。
summary(data_xlsx)
体重weightと身長からBMI(body mass index)を計算します。
BMI <- (data_xlsx$weight/(data_xlsx$height/100)^2) BMI
計算したBMIを、data_xlsx の一番右側の列に追加します。
data_xlsx$BMI <- BMI data_xlsx
ggplot()関数でグラフを表示してみる
DMの有無(0と1)で、BMIの棒グラフ(平均meanと標準偏差sdを計算)を描いてみます。
# convert関数を用いるためにhablarパッケージをインストール install.packages("hablar") # hablarパッケージの使用を宣言 library("hablar") # convert関数を用いて、d2のDM列のデータ型をfactorに変更 d2 %>% convert(fct(DM))
ggplot()関数を用いて棒グラフを描画します。
# ggplot()関数を用いる # geom_bar()でstat="identity"とする必要あり g <- ggplot(d3, aes(x=DM, y=mean)) + geom_bar(stat="identity")+ geom_errorbar(aes(ymin = mean - sd, ymax = mean + sd, width = 0.3)) g
t検定を行う
DM(糖尿病)の有無で、BMIに差があるかt検定してみます。(t検定できるかどうかは、今回は気にしないことにします。)
まず、DM_ari と、DM_nasiの数列(ベクトル?tibble?)を計算します。
DM_ari <- filter(data_xlsx, DM == "1")$BMI DM_ari DM_nasi <- filter(data_xlsx, DM == "0")$BMI DM_nasi
その後、DM_ariとDM_nasiでt検定を行います。
t.ans1 <- t.test(DM_ari, DM_nasi, var=T) t.ans1
p-value = 0.05792 (> 0.05 ) なので、「DMの有無で、BMIに有意差があるとは言えない。」という結論になります。
結果をipynbファイルでダウンロードして、自分のパソコンでhtmlに変換する(要Anaconda)
自分のパソコン(オフライン)に結果を保存しておきたい場合は、ipynbファイルをダウンロードして、htmlに変換しておきます。
https://www.it-swarm.dev/ja/python/google-colaboratory-notebook%E3%82%92html%E3%81%AB%E4%BF%9D%E5%AD%98%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F/808152667/
- Anacondaを自分のパソコンにインストール
- Anaconda promptで、conda install nbconvert でnbconvertをインストール
- 次を入力
jupyter nbconvert --to html xxxxxxxx.ipynb
ソースコード
Rでグラフを描くためのggplot2パッケージ
Rでグラフをかくなら、必須のパッケージといってよいと思います。
まず最初に、以下のリンク先の4つのスライドをご覧ください。素晴らしいです。
https://heavywatal.github.io/slides/makino2019r/
Hands-on R Lecture for Makino Lab
http://knknkn.hatenablog.com/entry/2019/02/23/181311
2019-02-23
ggplot2覚書⑤ 体裁(theme、テキストgeom)に関しての大枠
https://heavywatal.github.io/rstats/ggplot2.html
ggplot2 — きれいなグラフを簡単に合理的に
→基本的にはこちらを見れば、、、
Rに関するリンク
https://qiita.com/7of9/items/ca2b64cf5e9f0721a61d
@7of9
2017年06月16日に更新
R > データ構造 > データフレーム > 構造確認 > str()
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/10.html
10. オブジェクトの表示
https://opur.club/textbook/2018-2-2/
Lesson 2-2: データフレーム・tibble
2018/10/15
https://kazutan.github.io/JSSP2018_spring/data_handling.html
データ操作
http://bcl.sci.yamaguchi-u.ac.jp/~jun/notebook/r/tidyverse/dplyr/
dplyr (データ変換)
https://stats.biopapyrus.jp/r/tidyverse/dplyr.html
R / dplyr パッケージによるデータ操作と集計
dplyr
2019.08.16
http://motw.mods.jp/R/ggplot_geom_bar.html
ggplotで棒グラフを作る geom_bar()の使い方
https://stats.biopapyrus.jp/r/basic/data-type.html
R のデータ型・モード・クラス
データ型
2017.03.12
https://community.rstudio.com/t/how-to-convert-factor-data-to-numeric-for-all-dataset/17626/3
How to convert factor data to numeric for all dataset
2018-11-05
https://cran.r-project.org/web/packages/hablar/vignettes/convert.html
A grammer for data type conversion
https://cran.r-project.org/web/packages/hablar/index.html
hablar: Non-Astonishing Results in R
https://stackoverflow.com/questions/42459423/cannot-install-r-packages-in-jupyter-notebook
Cannot install R packages in Jupyter Notebook
https://kazutan.github.io/kazutanR/hands_on_170730/filter.html
行の選択 - filter関数
Rでt検定に関するリンク
https://oku.edu.mie-u.ac.jp/~okumura/stat/ttest.html
t 検定
https://to-kei.net/r-beginner/r-9-t-test/
Rでt検定行う方法とそのまま使える自作関数
2018/01/03
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/65.html
65. 二標本検定
https://data-science.gr.jp/implementation/ist_r_student_t_test.html
Rによるスチューデントのt検定
リンク