Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
始めよう,R
SappoRo.R 初心者向けワークショップ
1
MENU
• 【啓蒙編】Rは何がよいのか,あるいは私はいかにしてRに手を
染めるようになったか
• 【入門編】R環境の導入とRでできる基本的なこと
• 【実践編】Rをもっと便利に使いましょう
2
自己紹介
• なまえ;小杉考司(Twitter @kosugitti)
• しょぞく;山口大学教育学部教育心理学コース
• せんもん;社会心理学,または心理学的統計法
• けいれき;関西大学/関西学院大学→山口大学
• 「都会/マンモス/私立」...
【啓蒙編】
• Rを始めるべき理由,あるいはいかに私はRを始めるよう
になったか.
4
Rを使い始めた理由「研究編」
• 2007年着任当時,SPSSを持っていなかったし,ユーザ数が少ない地
方国立大学では,全学的にフォローしてくれる環境もなかった。
• 研究をするために,基本的な統計処理と構造方程式モデリングをす
る環境を自分で...
Rを使い始めた理由「研究編」
• 当時尺度開発の研究を行っていて,項目反応理論を扱えるソフト
ウェアが欲しかった。以前はBILOG-MG,Parscaleなど専門ソフト
を買ってもらっていたが,それも自分で用意する必要があった。
• 統計手法の...
そこで    ですよ
• フリーソフトウェアなので簡単に導入できた。
• 基本関数が豊かだったので自分でプログラムを書くのも簡単に
できた(複素数に対応した固有値分解関数!)
• MDS,IRTなどはパッケージを追加するだけで簡単に実行できた。...
Rを使い始めた理由「教育編」
• 学生の研究室に共同利用するPCが三台あった。学部生にひとつ,
M1/M2にひとつずつ。そこには古いSPSSとHALBAWが導入されて
いた。
• 学生は一人一台のノートPCを持たせることを推奨していたので,
皆...
Rを使い始めた理由「教育編」
• 統計がGUI環境で簡単に実行できることが,かろうじて文系の学
生にも受け入れられる理由であったが,教育上少なくとも3つの
問題があった。
1. 操作の意味を分からないまま身につけている。
2. 同じことを何度も...
そこで    ですよ
• フリーソフトウェアなので個々人に導入できた。
• コマンドを書くのは大変な労力ではあったが,「今何をしてい
るか」を考えさせる役に立った。
• データを共有するだけで,どこででも再現できたので,忙しい
ときはメールだけ...
当初は苦労した
• CUIのハードルの高さが,個人的には問題なかったが,学生には
やたら高く感じられるようであった。
• コードの代筆としてRcmdrを使っていたが,関数がお仕着せだっ
たりマシンによっては非常に鈍重な動きになっていた。
• 入...
いまはもう    だけ
• プラットフォームとして確立した感がある
• RstudioなどIDE環境が整った
• 動作が特に重く感じることはなくなってきた
• ダウンロード・インストールに関する意識,ある
いはコマンドを使うということに関する学...
まとめ
やすい!
ひろい!
はやい!
13
こっちこいよ!
• サンプルデータが防府豊富にあるので教材としても優れている
• 乗り換えを考えている人は,とりあえず「データファイルの読
み込み」と「データの整形」の山をこえれば後は問題ない
• 乗り換えの精神は「背水の陣」と「信じるものは救...
【入門編】
Rでできる基本的なこと
15
subMENU
• R環境の導入
• Rとの対話
• 関数とヘルプ
• 数をセットで扱う
• 表計算ソフトとは違うよ
• 試しにやってみよう1
• 代入しておけるオブジェクト
• リストとデータフレーム
• 数字の種類
• 試しにやってみよう2...
Rを導入しよう
• 「R」一文字では検索できないので,「Rproject」で検索してみ
ましょう。
17
18
19
20
21
Rの基本
• Rと一問一答スタイルです!
• 大文字と小文字を区別することに注意!
• 「>」この状態になっていれば会話スタートです!
22
Rの基本
• 四則演算をやってみましょう。
• 1+2はいくらだい?と聞いてみます。
23
もっともっと
• 2+3,3*4,4/5,(2+6)/4などの四則演算もお茶の子さいさい
• sqrt(16)とかabs(-2),cos(30)といった関数も使えます
• 2+3i+4+5iという複素数の計算も!
• piと書くと円周率がでてき...
関数とヘルプ
• ()で括るのを「関数」といいます。
• sqrt()もabs()もcos()も関数です。()の中に数値やデータやオプシ
ョンを指定します。
• ヘルプをひくのも関数で。help(sqrt)など。
• Rを終わらせるのも関数で。...
関数とヘルプ
• ()で括るのを「関数」といいます。
• sqrt()もabs()もcos()も関数です。()の中に数値やデータやオプシ
ョンを指定します。
• ヘルプをひくのも関数で。help(sqrt)など。
• Rを終わらせるのも関数で。...
作業スペース?
• Rの記憶だと思ってください。
• 次にRを使うときに,今やったことの記憶を引き継ぎたければ「は
い」を,宵越しの記憶は持たない,という人は「いいえ」を選択。
26
関数の書き方
• 関数は,関数名(引数,引数,引数,...)のように書きます。
• 引数(ひきすう)は関数に渡したい数字やデータです。
• 引数でオプションの指定をすることもあります。
• 例)mean(x, na.rm=TRUE)
• TRU...
ヘルプを使おう
• 関数の意味が分からなかった
ら,「>」とRが聞き耳を立て
ているときにお伺いをたてま
しょう。
• help(mean) あるいは ?meanと
書いてみましょう
• そうするとびっくりすること
が起きるよ。
28
ヘルプを使おう
• 関数の意味が分からなかった
ら,「>」とRが聞き耳を立て
ているときにお伺いをたてま
しょう。
• help(mean) あるいは ?meanと
書いてみましょう
• そうするとびっくりすること
が起きるよ。
28
ヘルプの使い方
• ヘルプは英語ですが,書式は整っているので慣れれば読めます
• Description;解説
• Usage;使い方とデフォルト情報。
• Auguments;引数。与える情報。
• Details;関数の詳細。
• Valu...
ヘルプはネットにも
• 青木先生のサイトやseekRも役に
立ちます。
30
ただの電卓じゃないよ
• 数字をセットで扱えます。
• 数字のセットに名前を付けてとっておくことができます。次の
ように入力してみてください。
• 1:4 -> sapporo
• 「いちころんよん ハイフン だいなり さっぽろ」
• 「さっぽ...
ただの電卓じゃないよ
• 数字をセットで扱えます。
• 数字のセットに名前を付けてとっておくことができます。次の
ように入力してみてください。
• 1:4 -> sapporo
• 「いちころんよん ハイフン だいなり さっぽろ」
• 「さっぽ...
一言一句解説
• 一行目;
• 「いちころんよん」;1から4まで連続した数字
• 「ハイフン だいなり」;→のつもり。代入しなさい。
• 「さっぽろ」;サッポロと名付けた箱の中に。
• 二行目
• 「さっぽろ」;サッポロの中身はなんなんだい?
...
数をセットで扱うというのは
• 次のように入力してみましょう
• c(1,3,5,7,9) ->Sapporo
• 注意!Sapporoとsapporoは別物です!sappoRoもね!
• Sapporo+3
• Sapporo*2
cは
「つ...
数をセットで扱うというのは
• 次のように入力してみましょう
• c(1,3,5,7,9) ->Sapporo
• 注意!Sapporoとsapporoは別物です!sappoRoもね!
• Sapporo+3
• Sapporo*2
> c(1...
数をセットで扱うので
• 当然こんなことができます。
平均はmean()
分散はvar()
標準偏差はsd()
相関はcor()
> x <- 1:10
> y <- c(2,3,4,2,3,4,2,3,4,5)
> mean(x)
[1] 5...
それじゃあ関数電卓だよ!
• という人のために。作図もできます。
• plot(x)
• plot(x,y)
• boxplot(x,y)
35
でもまだ○xcelに負けてるね!
• という人のために,今から色々紹介していきますが,
• ひとまずdemo(graphics)と入力してみないか?!
• 数値の行列処理,作図能力,なかなかのもんじゃぜ?
36
数字のセットとセットで
• 数字と数字のセットを足し合わせたりすることもできます
37
数字のセットとセットで
• 数字と数字のセットを足し合わせたりすることもできます
> x
[1] 1 2 3 4 5 6 7 8 9 10
> y
[1] 2 3 4 2 3 4 2 3 4 5
> x+y
[1] 3 5 7 6 8 10 9...
行列だぜ
• 表計算ソフトはベクトルの計算はできても行列計算は苦手なわ
けでして・・・
• 次のように入力してみましょう
• mat1 <- matrix(1:10,nrow=2)
• mat1
38
行列だぜ
• 表計算ソフトはベクトルの計算はできても行列計算は苦手なわ
けでして・・・
• 次のように入力してみましょう
• mat1 <- matrix(1:10,nrow=2)
• mat1
> mat1 <- matrix(1:10,nr...
要素にアクセス
• 出力の周辺に,[,1]とか[2,]とかありましたね。
• アレがそのまま,行列アクセスのヒントになっています。
• mat1[,1]
• mat1[2,]
• mat1[2,1]
39
要素にアクセス
• 出力の周辺に,[,1]とか[2,]とかありましたね。
• アレがそのまま,行列アクセスのヒントになっています。
• mat1[,1]
• mat1[2,]
• mat1[2,1]
> mat1[,1]
[1] 1 2
> m...
行列の計算?
• mat1 -2とかmat1*1とか。ベクトルと
同じで要素全てに処理。
• 行列とベクトルのかけ算とか,行列と
行列の足し算とか・・・は必要なんだ
けど,算数の授業じゃないのでパス!
40
代入袋
• ベクトル,マトリックスなど入れておく袋には種類があります
• 後二つ知っておいたら完璧。これぞリストとデータフレーム型
41
リストって
• なんでも入れておける。数字でも,文字でも。何も気にしなく
ていい。とにかく放り込める,まるで四次元ポケット。
42
リストって
• なんでも入れておける。数字でも,文字でも。何も気にしなく
ていい。とにかく放り込める,まるで四次元ポケット。
> Obj <- list(name=c("kosugi","koji"),
+ 	

	

 	

 sex=c("...
中身を確認
nameという名称で保存した情報。文字列。
sexという名称で保存した情報。文字列。
highという名称で保存した情報。数値のセット。
matという名称で保存した情報。
数値のセットのセット=行列
> Obj
$name
[1] "...
呼び出しは見た通り
• 出力の途中に$がありましたね。
• アレがそのまま,要素へのアクセスのヒン
トになっています。
• Obj$name
• Obj$mat
44
呼び出しは見た通り
• 出力の途中に$がありましたね。
• アレがそのまま,要素へのアクセスのヒン
トになっています。
• Obj$name
• Obj$mat
> Obj$name
[1] "kosugi" "koji"
> Obj$mat
...
データフレームって
• 行列とリストのいいとこ取り?
• 整頓されたリスト。矩形。よく見る
データセットの形。
• 列名(変数名)がつけられる
45
データフレームの例
• Irisデータをみてみましょう。baseに最初から含まれるデータセ
ットですので,特に何もしなくても読み込まれています。
• head(iris)/tail(iris);データの最初の数行,最後の数行
• summary...
データフレームの例
• ここでstr関数
• str(iris);オブジェクトの構造を示します。
> str(iris)
'data.frame':	

 150 obs. of 5 variables:
$ Sepal.Length: num...
データの種類
• num;数字ですね
• factor;数字+ラベル,のことです
• iris$Speciesと入力してみましょう。
• 名義・順序尺度水準の数値
48
データの種類
• num;数字ですね
• factor;数字+ラベル,のことです
• iris$Speciesと入力してみましょう。
• 名義・順序尺度水準の数値
> iris$Species
[1] setosa setosa setosa ...
データの種類
• num;数字ですね
• factor;数字+ラベル,のことです
• iris$Speciesと入力してみましょう。
• 名義・順序尺度水準の数値
> iris$Species
[1] setosa setosa setosa ...
ちなみに
• 先ほどのリストObjもstrすると種類が分かります。
• 他にも論理型Logicalというのがあり,TRUE/FALSEの二つの値を
とります。
List of 4
$ name : chr [1:2] "kosugi" "koj...
データと分析の一例を
• hist(iris$Sepal.Width)
• cor(iris$Sepal.Width,iris$Sepal.Length)
• result <- aov(Sepal.Length~Species,data=ir...
さて
51
【実践編】
Rをたっぷり使いましょう
52
subMENU
• Rstudioをつかってもっと便利にRを使おう
• ファイルからデータを読み込むには
• パッケージを読み込むには
• データを整理整頓
• モデルの表記法を知ろう
53
はじめに;
圧倒的にお勧め
と
54
はじめに;
圧倒的にお勧め
と
54
どれぐらいお勧めかというと
• 統計処理をお料理に例えると(cf.木下冨雄)
• R本体でも楽しくお料理はできる。飯ごう炊爨的楽しさ。
• RStudioはキッチンスタジアム級!
55
四つの領域と複数のタブ
Console
Script
Workspace/History Files/Plots/Packages/Help
Files 冷蔵庫/Plot ブログ用画像
Package 調味料/Help レシピ本
シンク/カメラ...
57
58
RstudioのProject
• プロジェクト単位によ
るデータ管理をしてお
くとよい
• ひとつのフォルダに
データとソースコー
ドを入れておく
59
60
61
62
63
64
長所
• ファイルがあちこちに拡散しない
• プロジェクトごとにワークスペース(Rの記憶)が保持できる
• Working Directoryが自動的に設定される(パスが短くて済む)
• R単体だとsetwd関数で指定してやる必要がある
65
他にも便利な機能がいっぱい
• 関数補完機能(TABキー)
• SourceからConsoleへ(Run),HistoryからConsoleやSourceへ
• 実行してうまく行ったものをSourceに保存=清書
• プロットした図の出力(サイ...
subMENU
• Rstudioをつかってもっと便利にRを使おう
• ファイルからデータを読み込むには
• パッケージを読み込むには
• データを整理整頓
• モデルの表記法を知ろう
67
データの読み込み
• 多くの場合,データはファイルとしてR外部に置いてある
• これが読み込めるだけでずいぶん りますよね
• データはカンマ区切り(csv),タブ区切りのテキスト形式で保存
してあることが望ましいです。
68
データの読み込み
• 関数を使って読み込む例
• 代入先←関数名(ファイル名,ヘッダ,欠損値)
• delim;テキストファイル,csv;カンマ区切り
• ファイル名を直接指定するかfile.choose関数
• 一行目に変数名あり=TRUE,な...
補遺)データの読み込み
• SPSSやExcelなど,他のアプリで作っ
たデータをそのまま読み込みたい時
はforeignパッケージを使いましょう
• あるいはRzパッケージを使いましょ
う。RzパッケージはGUI環境でファ
イルの操作が可能で...
Rstudio)ファイルを読み込むと
• read.delim / read.csv関数でファイルを指定する時は,フルパスが
必要(ex.“C:UserKosugittiDatasample.csv”)
• でもプロジェクトフォルダ内だとファイ...
subMENU
• Rstudioをつかってもっと便利にRを使おう
• ファイルからデータを読み込むには
• パッケージを読み込むには
• データを整理整頓
• モデルの表記法を知ろう
72
over 4000 packages!
• パッケージは「新しい料理のレシピ」,”Cookpad”のようなもの。
• インターネット上のCRANから取り込んで料理上手になろう!
• パッケージをインストールするのは三通り
• install.p...
パッケージのインストール
• install.packages(“psych”) とするか,
• メニューのパッケージから進むか
74
パッケージのインストール
• install.packages(“psych”) とするか,
• メニューのパッケージから進むか
74
Rstudio)packageタブから
• ここでinstall Packagesを選ぶと
グイグイいけます。
• ダウンロード済みのパッケー
ジをアップデートするのもグ
イッと!
75
ダウンロードと実装
• インストールするだけでは使えません。
• 「ここで装備していくかい?」=library関数
• library(psych)とするとpsychパッケージの関数群がつかえるよう
になります。
76
Rstudio)libraryもボタン一つで
装備を外す=detachもチェックボックスをオフにするだけ
77
subMENU
• Rstudioをつかってもっと便利にRを使おう
• ファイルからデータを読み込むには
• パッケージを読み込むには
• データを整理整頓
• モデルの表記法を知ろう
78
変数を触る,作る,切り取る
• read.delim関数で読み込んだデータセットは,data.frame型になっ
ている。
• ドルマークをつかって変数にアクセスするのでした。
• ex) iris$Sepal.Width
• 変数同士を計算す...
変数を触る,作る,切り取る
• 計算結果の保存先を同じデータセットにし,新しい名前を付け
てやると新しい変数ができます。
• iris$ratio <- iris$Sepal.Width/iris$Sepal.Length
80
変数を触る,作る,切り取る
• 計算結果の保存先を同じデータセットにし,新しい名前を付け
てやると新しい変数ができます。
• iris$ratio <- iris$Sepal.Width/iris$Sepal.Length
80
変数を触る,作る,切り取る
• 計算結果の保存先を同じデータセットにし,新しい名前を付け
てやると新しい変数ができます。
• iris$ratio <- iris$Sepal.Width/iris$Sepal.Length
80
変数を触る,作る,切り取る
• 変数の一部を切り取って別のオブジェクトにできます。
• iris2 <- subset(iris,select=c("Sepal.Length","ratio"))
81
変数を触る,作る,切り取る
• 条件で切り取ることでもできます。
• iris3 <- subset(iris,iris$Species=="setosa")
82
Rstudio)ここでも確認できます
• 新しいデータセットを作るとRのWorkingSpaceに蓄えられていく
変数やオブザベーションの数に注意して見てね
83
接着ける
• データとデータを引っ付ける場合はcbind
かrbind関数
• cbindは横に,rbindは縦にひっつけます。
• 行数・列数が等しくないとエラーになり
ます.
X Y
cbind
84
接着ける
• データとデータを引っ付ける場合はcbind
かrbind関数
• cbindは横に,rbindは縦にひっつけます。
• 行数・列数が等しくないとエラーになり
ます.
X
Zrbind
84
Rstudio)ここでも確認できます
変数やオブザベーションの数に注意して見てね
85
接着ける2
• データの名寄せをする時はmerge関数が便利です
• 名寄せのキーになる変数をbyオプションで指定するなど
• 詳細はhelp(merge)のExampleを見てみましょう
86
subMENU
• Rstudioをつかってもっと便利にRを使おう
• ファイルからデータを読み込むには
• パッケージを読み込むには
• データを整理整頓
• モデルの表記法を知ろう
87
基本となる書き方
• 関数の意味やモデルの詳細はヘルプに譲るとして・・・
• 独立変数(説明変数)と従属変数(被説明変数,目的変数)の
関係を表すformulaを知っておくと,少しばかり ります。
• 従属変数∼独立変数+独立変数・・・という書...
データと分析の一例を
• result1 <- aov(Sepal.Length~Species,data=iris)
• result2 <- lm(Sepal.Length~Sepal.Width,data=iris)
• result3 ...
データと分析の一例を
• result4 <- factanal(~.,factors=1,data=iris[,-5])
• 因子分析は従属変数がないことがわかる
• ピリオドで「全ての変数」
• iris[,-5]は5列目は削除してね,とい...
Enjoy Life!
Thank you!
Upcoming SlideShare
Loading in …5
×

SappoRo.R #2 初心者向けWS資料

2,177 views

Published on

Published in: Education
  • Be the first to comment

SappoRo.R #2 初心者向けWS資料

  1. 1. 始めよう,R SappoRo.R 初心者向けワークショップ 1
  2. 2. MENU • 【啓蒙編】Rは何がよいのか,あるいは私はいかにしてRに手を 染めるようになったか • 【入門編】R環境の導入とRでできる基本的なこと • 【実践編】Rをもっと便利に使いましょう 2
  3. 3. 自己紹介 • なまえ;小杉考司(Twitter @kosugitti) • しょぞく;山口大学教育学部教育心理学コース • せんもん;社会心理学,または心理学的統計法 • けいれき;関西大学/関西学院大学→山口大学 • 「都会/マンモス/私立」から「地方/少数/国立」へ 3
  4. 4. 【啓蒙編】 • Rを始めるべき理由,あるいはいかに私はRを始めるよう になったか. 4
  5. 5. Rを使い始めた理由「研究編」 • 2007年着任当時,SPSSを持っていなかったし,ユーザ数が少ない地 方国立大学では,全学的にフォローしてくれる環境もなかった。 • 研究をするために,基本的な統計処理と構造方程式モデリングをす る環境を自分で整えなければならなかった。 • 毎年のようにバージョンアップされるSPSSを追いかける気力・体 力・資金力がなかった。 5
  6. 6. Rを使い始めた理由「研究編」 • 当時尺度開発の研究を行っていて,項目反応理論を扱えるソフト ウェアが欲しかった。以前はBILOG-MG,Parscaleなど専門ソフト を買ってもらっていたが,それも自分で用意する必要があった。 • 統計手法のコレクターでもあったので,テキストマイニングや数 量化理論,MDS(特に非対称)など,とにかく色々な統計手法 が自由に使いたかった。 6
  7. 7. そこで    ですよ • フリーソフトウェアなので簡単に導入できた。 • 基本関数が豊かだったので自分でプログラムを書くのも簡単に できた(複素数に対応した固有値分解関数!) • MDS,IRTなどはパッケージを追加するだけで簡単に実行できた。 • 青木先生のサイトなど既に十分なインターネット上の情報公 開,関数提供がなされていた=テキストも無料だった 7
  8. 8. Rを使い始めた理由「教育編」 • 学生の研究室に共同利用するPCが三台あった。学部生にひとつ, M1/M2にひとつずつ。そこには古いSPSSとHALBAWが導入されて いた。 • 学生は一人一台のノートPCを持たせることを推奨していたので, 皆PCはもっていたが,卒論・修論の時期になると分析と印刷は共 同PCで行うので,混雑することが多かった。 8
  9. 9. Rを使い始めた理由「教育編」 • 統計がGUI環境で簡単に実行できることが,かろうじて文系の学 生にも受け入れられる理由であったが,教育上少なくとも3つの 問題があった。 1. 操作の意味を分からないまま身につけている。 2. 同じことを何度もやってみせて教えなければならない。 3. エラーが生じた時,再現性が確保されない。 9
  10. 10. そこで    ですよ • フリーソフトウェアなので個々人に導入できた。 • コマンドを書くのは大変な労力ではあったが,「今何をしてい るか」を考えさせる役に立った。 • データを共有するだけで,どこででも再現できたので,忙しい ときはメールだけで指導できた。 10
  11. 11. 当初は苦労した • CUIのハードルの高さが,個人的には問題なかったが,学生には やたら高く感じられるようであった。 • コードの代筆としてRcmdrを使っていたが,関数がお仕着せだっ たりマシンによっては非常に鈍重な動きになっていた。 • 入門書,特にパッケージに関する解説本が少なかった。 11
  12. 12. いまはもう    だけ • プラットフォームとして確立した感がある • RstudioなどIDE環境が整った • 動作が特に重く感じることはなくなってきた • ダウンロード・インストールに関する意識,ある いはコマンドを使うということに関する学生の意 識が変わってきた 12
  13. 13. まとめ やすい! ひろい! はやい! 13
  14. 14. こっちこいよ! • サンプルデータが防府豊富にあるので教材としても優れている • 乗り換えを考えている人は,とりあえず「データファイルの読 み込み」と「データの整形」の山をこえれば後は問題ない • 乗り換えの精神は「背水の陣」と「信じるものは救われる」 14
  15. 15. 【入門編】 Rでできる基本的なこと 15
  16. 16. subMENU • R環境の導入 • Rとの対話 • 関数とヘルプ • 数をセットで扱う • 表計算ソフトとは違うよ • 試しにやってみよう1 • 代入しておけるオブジェクト • リストとデータフレーム • 数字の種類 • 試しにやってみよう2 16
  17. 17. Rを導入しよう • 「R」一文字では検索できないので,「Rproject」で検索してみ ましょう。 17
  18. 18. 18
  19. 19. 19
  20. 20. 20
  21. 21. 21
  22. 22. Rの基本 • Rと一問一答スタイルです! • 大文字と小文字を区別することに注意! • 「>」この状態になっていれば会話スタートです! 22
  23. 23. Rの基本 • 四則演算をやってみましょう。 • 1+2はいくらだい?と聞いてみます。 23
  24. 24. もっともっと • 2+3,3*4,4/5,(2+6)/4などの四則演算もお茶の子さいさい • sqrt(16)とかabs(-2),cos(30)といった関数も使えます • 2+3i+4+5iという複素数の計算も! • piと書くと円周率がでてきます(予約語) • 予約語については?Constantsで調べてね 24 Tips
  25. 25. 関数とヘルプ • ()で括るのを「関数」といいます。 • sqrt()もabs()もcos()も関数です。()の中に数値やデータやオプシ ョンを指定します。 • ヘルプをひくのも関数で。help(sqrt)など。 • Rを終わらせるのも関数で。q()とします。 25
  26. 26. 関数とヘルプ • ()で括るのを「関数」といいます。 • sqrt()もabs()もcos()も関数です。()の中に数値やデータやオプシ ョンを指定します。 • ヘルプをひくのも関数で。help(sqrt)など。 • Rを終わらせるのも関数で。q()とします。 25
  27. 27. 作業スペース? • Rの記憶だと思ってください。 • 次にRを使うときに,今やったことの記憶を引き継ぎたければ「は い」を,宵越しの記憶は持たない,という人は「いいえ」を選択。 26
  28. 28. 関数の書き方 • 関数は,関数名(引数,引数,引数,...)のように書きます。 • 引数(ひきすう)は関数に渡したい数字やデータです。 • 引数でオプションの指定をすることもあります。 • 例)mean(x, na.rm=TRUE) • TRUE/FALSEはスイッチのon/offを表す記号です(予約語)
  29. 29. ヘルプを使おう • 関数の意味が分からなかった ら,「>」とRが聞き耳を立て ているときにお伺いをたてま しょう。 • help(mean) あるいは ?meanと 書いてみましょう • そうするとびっくりすること が起きるよ。 28
  30. 30. ヘルプを使おう • 関数の意味が分からなかった ら,「>」とRが聞き耳を立て ているときにお伺いをたてま しょう。 • help(mean) あるいは ?meanと 書いてみましょう • そうするとびっくりすること が起きるよ。 28
  31. 31. ヘルプの使い方 • ヘルプは英語ですが,書式は整っているので慣れれば読めます • Description;解説 • Usage;使い方とデフォルト情報。 • Auguments;引数。与える情報。 • Details;関数の詳細。 • Value;関数が返す値。アウトプット。 • ReferenceやExampleもあります。 29
  32. 32. ヘルプはネットにも • 青木先生のサイトやseekRも役に 立ちます。 30
  33. 33. ただの電卓じゃないよ • 数字をセットで扱えます。 • 数字のセットに名前を付けてとっておくことができます。次の ように入力してみてください。 • 1:4 -> sapporo • 「いちころんよん ハイフン だいなり さっぽろ」 • 「さっぽろ」 31
  34. 34. ただの電卓じゃないよ • 数字をセットで扱えます。 • 数字のセットに名前を付けてとっておくことができます。次の ように入力してみてください。 • 1:4 -> sapporo • 「いちころんよん ハイフン だいなり さっぽろ」 • 「さっぽろ」 > 1:4 -> sapporo > sapporo [1] 1 2 3 4 31
  35. 35. 一言一句解説 • 一行目; • 「いちころんよん」;1から4まで連続した数字 • 「ハイフン だいなり」;→のつもり。代入しなさい。 • 「さっぽろ」;サッポロと名付けた箱の中に。 • 二行目 • 「さっぽろ」;サッポロの中身はなんなんだい? 32
  36. 36. 数をセットで扱うというのは • 次のように入力してみましょう • c(1,3,5,7,9) ->Sapporo • 注意!Sapporoとsapporoは別物です!sappoRoもね! • Sapporo+3 • Sapporo*2 cは 「つないで」 33
  37. 37. 数をセットで扱うというのは • 次のように入力してみましょう • c(1,3,5,7,9) ->Sapporo • 注意!Sapporoとsapporoは別物です!sappoRoもね! • Sapporo+3 • Sapporo*2 > c(1,3,5,7,9)-> Sapporo > Sapporo+3 [1] 4 6 8 10 12 > Sapporo*2 [1] 2 6 10 14 18 cは 「つないで」 33
  38. 38. 数をセットで扱うので • 当然こんなことができます。 平均はmean() 分散はvar() 標準偏差はsd() 相関はcor() > x <- 1:10 > y <- c(2,3,4,2,3,4,2,3,4,5) > mean(x) [1] 5.5 > var(x) [1] 9.166667 > sd(x) [1] 3.02765 > cor(x,y) [1] 0.5330018 34
  39. 39. それじゃあ関数電卓だよ! • という人のために。作図もできます。 • plot(x) • plot(x,y) • boxplot(x,y) 35
  40. 40. でもまだ○xcelに負けてるね! • という人のために,今から色々紹介していきますが, • ひとまずdemo(graphics)と入力してみないか?! • 数値の行列処理,作図能力,なかなかのもんじゃぜ? 36
  41. 41. 数字のセットとセットで • 数字と数字のセットを足し合わせたりすることもできます 37
  42. 42. 数字のセットとセットで • 数字と数字のセットを足し合わせたりすることもできます > x [1] 1 2 3 4 5 6 7 8 9 10 > y [1] 2 3 4 2 3 4 2 3 4 5 > x+y [1] 3 5 7 6 8 10 9 11 13 15 37
  43. 43. 行列だぜ • 表計算ソフトはベクトルの計算はできても行列計算は苦手なわ けでして・・・ • 次のように入力してみましょう • mat1 <- matrix(1:10,nrow=2) • mat1 38
  44. 44. 行列だぜ • 表計算ソフトはベクトルの計算はできても行列計算は苦手なわ けでして・・・ • 次のように入力してみましょう • mat1 <- matrix(1:10,nrow=2) • mat1 > mat1 <- matrix(1:10,nrow=2) > mat1 [,1] [,2] [,3] [,4] [,5] [1,] 1 3 5 7 9 [2,] 2 4 6 8 10 38
  45. 45. 要素にアクセス • 出力の周辺に,[,1]とか[2,]とかありましたね。 • アレがそのまま,行列アクセスのヒントになっています。 • mat1[,1] • mat1[2,] • mat1[2,1] 39
  46. 46. 要素にアクセス • 出力の周辺に,[,1]とか[2,]とかありましたね。 • アレがそのまま,行列アクセスのヒントになっています。 • mat1[,1] • mat1[2,] • mat1[2,1] > mat1[,1] [1] 1 2 > mat1[2,] [1] 2 4 6 8 10 > mat1[2,1] [1] 2 39
  47. 47. 行列の計算? • mat1 -2とかmat1*1とか。ベクトルと 同じで要素全てに処理。 • 行列とベクトルのかけ算とか,行列と 行列の足し算とか・・・は必要なんだ けど,算数の授業じゃないのでパス! 40
  48. 48. 代入袋 • ベクトル,マトリックスなど入れておく袋には種類があります • 後二つ知っておいたら完璧。これぞリストとデータフレーム型 41
  49. 49. リストって • なんでも入れておける。数字でも,文字でも。何も気にしなく ていい。とにかく放り込める,まるで四次元ポケット。 42
  50. 50. リストって • なんでも入れておける。数字でも,文字でも。何も気にしなく ていい。とにかく放り込める,まるで四次元ポケット。 > Obj <- list(name=c("kosugi","koji"), + sex=c("male","female","DK/NA"), + hight=c(160,170,180), + mat=matrix(1:10,nrow=5)) 42
  51. 51. 中身を確認 nameという名称で保存した情報。文字列。 sexという名称で保存した情報。文字列。 highという名称で保存した情報。数値のセット。 matという名称で保存した情報。 数値のセットのセット=行列 > Obj $name [1] "kosugi" "koji" $sex [1] "male" "female" "DK/NA" $hight [1] 160 170 180 $mat [,1] [,2] [1,] 1 6 [2,] 2 7 [3,] 3 8 43
  52. 52. 呼び出しは見た通り • 出力の途中に$がありましたね。 • アレがそのまま,要素へのアクセスのヒン トになっています。 • Obj$name • Obj$mat 44
  53. 53. 呼び出しは見た通り • 出力の途中に$がありましたね。 • アレがそのまま,要素へのアクセスのヒン トになっています。 • Obj$name • Obj$mat > Obj$name [1] "kosugi" "koji" > Obj$mat [,1] [,2] [1,] 1 6 [2,] 2 7 [3,] 3 8 [4,] 4 9 [5,] 5 10 44
  54. 54. データフレームって • 行列とリストのいいとこ取り? • 整頓されたリスト。矩形。よく見る データセットの形。 • 列名(変数名)がつけられる 45
  55. 55. データフレームの例 • Irisデータをみてみましょう。baseに最初から含まれるデータセ ットですので,特に何もしなくても読み込まれています。 • head(iris)/tail(iris);データの最初の数行,最後の数行 • summary(iris);データの要約が表示されます。 46
  56. 56. データフレームの例 • ここでstr関数 • str(iris);オブジェクトの構造を示します。 > str(iris) 'data.frame': 150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ... 47
  57. 57. データの種類 • num;数字ですね • factor;数字+ラベル,のことです • iris$Speciesと入力してみましょう。 • 名義・順序尺度水準の数値 48
  58. 58. データの種類 • num;数字ですね • factor;数字+ラベル,のことです • iris$Speciesと入力してみましょう。 • 名義・順序尺度水準の数値 > iris$Species [1] setosa setosa setosa s (中略) [131] virginica virginica virginica v [141] virginica virginica virginica v Levels: setosa versicolor virginica 48
  59. 59. データの種類 • num;数字ですね • factor;数字+ラベル,のことです • iris$Speciesと入力してみましょう。 • 名義・順序尺度水準の数値 > iris$Species [1] setosa setosa setosa s (中略) [131] virginica virginica virginica v [141] virginica virginica virginica v Levels: setosa versicolor virginica 1, 2, 3 48
  60. 60. ちなみに • 先ほどのリストObjもstrすると種類が分かります。 • 他にも論理型Logicalというのがあり,TRUE/FALSEの二つの値を とります。 List of 4 $ name : chr [1:2] "kosugi" "koji" $ sex : chr [1:3] "male" "female" "DK/NA" $ hight: num [1:3] 160 170 180 $ mat : int [1:5, 1:2] 1 2 3 4 5 6 7 8 9 10 文字列chr 数値num 整数値int 49
  61. 61. データと分析の一例を • hist(iris$Sepal.Width) • cor(iris$Sepal.Width,iris$Sepal.Length) • result <- aov(Sepal.Length~Species,data=iris) • summary(result) • result2 <- lm(Sepal.Length~Sepal.Width,data=iris) • result2 • plot(iris$Sepal.Width,iris$Sepal.Length) • abline(result2) 50
  62. 62. さて 51
  63. 63. 【実践編】 Rをたっぷり使いましょう 52
  64. 64. subMENU • Rstudioをつかってもっと便利にRを使おう • ファイルからデータを読み込むには • パッケージを読み込むには • データを整理整頓 • モデルの表記法を知ろう 53
  65. 65. はじめに; 圧倒的にお勧め と 54
  66. 66. はじめに; 圧倒的にお勧め と 54
  67. 67. どれぐらいお勧めかというと • 統計処理をお料理に例えると(cf.木下冨雄) • R本体でも楽しくお料理はできる。飯ごう炊爨的楽しさ。 • RStudioはキッチンスタジアム級! 55
  68. 68. 四つの領域と複数のタブ Console Script Workspace/History Files/Plots/Packages/Help Files 冷蔵庫/Plot ブログ用画像 Package 調味料/Help レシピ本 シンク/カメラ 調理場 ここでレシピを展開 56
  69. 69. 57
  70. 70. 58
  71. 71. RstudioのProject • プロジェクト単位によ るデータ管理をしてお くとよい • ひとつのフォルダに データとソースコー ドを入れておく 59
  72. 72. 60
  73. 73. 61
  74. 74. 62
  75. 75. 63
  76. 76. 64
  77. 77. 長所 • ファイルがあちこちに拡散しない • プロジェクトごとにワークスペース(Rの記憶)が保持できる • Working Directoryが自動的に設定される(パスが短くて済む) • R単体だとsetwd関数で指定してやる必要がある 65
  78. 78. 他にも便利な機能がいっぱい • 関数補完機能(TABキー) • SourceからConsoleへ(Run),HistoryからConsoleやSourceへ • 実行してうまく行ったものをSourceに保存=清書 • プロットした図の出力(サイズ変更やClipboard出力,File出力) 66
  79. 79. subMENU • Rstudioをつかってもっと便利にRを使おう • ファイルからデータを読み込むには • パッケージを読み込むには • データを整理整頓 • モデルの表記法を知ろう 67
  80. 80. データの読み込み • 多くの場合,データはファイルとしてR外部に置いてある • これが読み込めるだけでずいぶん りますよね • データはカンマ区切り(csv),タブ区切りのテキスト形式で保存 してあることが望ましいです。 68
  81. 81. データの読み込み • 関数を使って読み込む例 • 代入先←関数名(ファイル名,ヘッダ,欠損値) • delim;テキストファイル,csv;カンマ区切り • ファイル名を直接指定するかfile.choose関数 • 一行目に変数名あり=TRUE,なし=FALSE • 欠損値は文字,記号等を指定する sample1 <- read.delim("sample.dat",head=TRUE,na.strings="*") sample2 <- read.csv("sample.csv",head=TRUE,na.strings=".") sample3 <- read.csv(file.choose(),head=FALSE,na.strings="9")
  82. 82. 補遺)データの読み込み • SPSSやExcelなど,他のアプリで作っ たデータをそのまま読み込みたい時 はforeignパッケージを使いましょう • あるいはRzパッケージを使いましょ う。RzパッケージはGUI環境でファ イルの操作が可能です! 70
  83. 83. Rstudio)ファイルを読み込むと • read.delim / read.csv関数でファイルを指定する時は,フルパスが 必要(ex.“C:UserKosugittiDatasample.csv”) • でもプロジェクトフォルダ内だとファイル名だけでいい。 • 読み込んだ後にWorkspaceにどんなものがあるか表示されている 71
  84. 84. subMENU • Rstudioをつかってもっと便利にRを使おう • ファイルからデータを読み込むには • パッケージを読み込むには • データを整理整頓 • モデルの表記法を知ろう 72
  85. 85. over 4000 packages! • パッケージは「新しい料理のレシピ」,”Cookpad”のようなもの。 • インターネット上のCRANから取り込んで料理上手になろう! • パッケージをインストールするのは三通り • install.packages関数を使う • Rguiから • Rstudioから 73
  86. 86. パッケージのインストール • install.packages(“psych”) とするか, • メニューのパッケージから進むか 74
  87. 87. パッケージのインストール • install.packages(“psych”) とするか, • メニューのパッケージから進むか 74
  88. 88. Rstudio)packageタブから • ここでinstall Packagesを選ぶと グイグイいけます。 • ダウンロード済みのパッケー ジをアップデートするのもグ イッと! 75
  89. 89. ダウンロードと実装 • インストールするだけでは使えません。 • 「ここで装備していくかい?」=library関数 • library(psych)とするとpsychパッケージの関数群がつかえるよう になります。 76
  90. 90. Rstudio)libraryもボタン一つで 装備を外す=detachもチェックボックスをオフにするだけ 77
  91. 91. subMENU • Rstudioをつかってもっと便利にRを使おう • ファイルからデータを読み込むには • パッケージを読み込むには • データを整理整頓 • モデルの表記法を知ろう 78
  92. 92. 変数を触る,作る,切り取る • read.delim関数で読み込んだデータセットは,data.frame型になっ ている。 • ドルマークをつかって変数にアクセスするのでした。 • ex) iris$Sepal.Width • 変数同士を計算することも当然できるわけです • ex) iris$Sepal.Width/iris$Sepal.Length 79
  93. 93. 変数を触る,作る,切り取る • 計算結果の保存先を同じデータセットにし,新しい名前を付け てやると新しい変数ができます。 • iris$ratio <- iris$Sepal.Width/iris$Sepal.Length 80
  94. 94. 変数を触る,作る,切り取る • 計算結果の保存先を同じデータセットにし,新しい名前を付け てやると新しい変数ができます。 • iris$ratio <- iris$Sepal.Width/iris$Sepal.Length 80
  95. 95. 変数を触る,作る,切り取る • 計算結果の保存先を同じデータセットにし,新しい名前を付け てやると新しい変数ができます。 • iris$ratio <- iris$Sepal.Width/iris$Sepal.Length 80
  96. 96. 変数を触る,作る,切り取る • 変数の一部を切り取って別のオブジェクトにできます。 • iris2 <- subset(iris,select=c("Sepal.Length","ratio")) 81
  97. 97. 変数を触る,作る,切り取る • 条件で切り取ることでもできます。 • iris3 <- subset(iris,iris$Species=="setosa") 82
  98. 98. Rstudio)ここでも確認できます • 新しいデータセットを作るとRのWorkingSpaceに蓄えられていく 変数やオブザベーションの数に注意して見てね 83
  99. 99. 接着ける • データとデータを引っ付ける場合はcbind かrbind関数 • cbindは横に,rbindは縦にひっつけます。 • 行数・列数が等しくないとエラーになり ます. X Y cbind 84
  100. 100. 接着ける • データとデータを引っ付ける場合はcbind かrbind関数 • cbindは横に,rbindは縦にひっつけます。 • 行数・列数が等しくないとエラーになり ます. X Zrbind 84
  101. 101. Rstudio)ここでも確認できます 変数やオブザベーションの数に注意して見てね 85
  102. 102. 接着ける2 • データの名寄せをする時はmerge関数が便利です • 名寄せのキーになる変数をbyオプションで指定するなど • 詳細はhelp(merge)のExampleを見てみましょう 86
  103. 103. subMENU • Rstudioをつかってもっと便利にRを使おう • ファイルからデータを読み込むには • パッケージを読み込むには • データを整理整頓 • モデルの表記法を知ろう 87
  104. 104. 基本となる書き方 • 関数の意味やモデルの詳細はヘルプに譲るとして・・・ • 独立変数(説明変数)と従属変数(被説明変数,目的変数)の 関係を表すformulaを知っておくと,少しばかり ります。 • 従属変数∼独立変数+独立変数・・・という書き方をします。 88
  105. 105. データと分析の一例を • result1 <- aov(Sepal.Length~Species,data=iris) • result2 <- lm(Sepal.Length~Sepal.Width,data=iris) • result3 <- lm(Sepal.Length~Sepal.Width+Petal.Length,data=iris) • 分散分析と回帰分析は同じ仲間! 89
  106. 106. データと分析の一例を • result4 <- factanal(~.,factors=1,data=iris[,-5]) • 因子分析は従属変数がないことがわかる • ピリオドで「全ての変数」 • iris[,-5]は5列目は削除してね,という意味 90 Tips
  107. 107. Enjoy Life! Thank you!

×