1 / 42

バイオデータ解析入門 ~ R 入門~

バイオデータ解析入門 ~ R 入門~. 久留米大学バイオ統計センター 川口淳. 内容. R の紹介 R での計算 ベクトル,行列 データフレーム,データの入出力 確率分布,基本統計量 グラフィックス パッケージ プログラミング. R とは. 統計計算とグラフィックスのための言語・環境 多様な統計手法 (公開パッケージ) うまくデザインされた出版物並みのプロットを容易に作成できる フリーソフト プログラムコードは S-Plus でも使える. R 環境. データを効率的に操作し、保管する機能 配列、とくに行列の計算

peri
Download Presentation

バイオデータ解析入門 ~ R 入門~

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. バイオデータ解析入門~R入門~ 久留米大学バイオ統計センター 川口淳

  2. 内容 • Rの紹介 • Rでの計算 • ベクトル,行列 • データフレーム,データの入出力 • 確率分布,基本統計量 • グラフィックス • パッケージ • プログラミング

  3. Rとは • 統計計算とグラフィックスのための言語・環境 • 多様な統計手法 (公開パッケージ) • うまくデザインされた出版物並みのプロットを容易に作成できる • フリーソフト • プログラムコードはS-Plusでも使える

  4. R環境 • データを効率的に操作し、保管する機能 • 配列、とくに行列の計算 • データ解析の媒介に使う道具の集り • グラフィカルな機能と、画面または印刷物への出力 • 条件分岐、ループ、ユーザー定義の再帰的関数を含む、簡潔で効率的なプログラミング言語

  5. 参考書など • RjpWiki(http://www.okada.jp.org/RWiki/) • Rによる統計解析の基礎 中澤 港 (著) (2003/10), ピアソンエデュケーション • The R Tips―データ解析環境Rの基本技・グラフィックス活用集,舟尾 暢男 (編集),(2005/02) ,九天社 参考: RjpWiki→リンク集

  6. Rをつかう • インストール • 参考:RjpWiki→Rのインストール • 起動 • デスクトップのアイコンをダブルクリック • スタート→すべてのプログラム→R • 終了 • 右上の✕ボタン→質問に「いいえ」

  7. Rの画面 • コンソール • Rに命令を送るウィンドウ.直接入力もできる. • スクリプト(エディタ) • Rのコマンドを保存できるノートみたいなもの • 作ったプログラムはここから保存 • グラフ • グラフ出力用のウィンドウ • グラフの保存,コピーができる.

  8. スクリプト グラフ コンソール

  9. ヘルプの使い方 • 関数について • ?rnorm • help(rnorm) • 演算子について • ?”+” 参考: RjpWiki→Tips紹介→Rのヘルプ機能

  10. 四則演算,累乗 #コメントアウト 3+4 3-4 3*4 3/4 3^4 変数を使った計算 x<-3 y<-4 x #値の確認 y x+y x-y x*y x/y x^y Rで計算する

  11. 三角関数 x<-pi/4 cos(x) sin(x) tan(x) 対数,指数関数 x<-1 log(x, base = exp(1)) log10(x) exp(x) 初等数値関数

  12. ベクトルを作る • c(), seq(), rep() • x<-c(1,3,5,7) • x<-seq(1,7,by=2) • x<-seq(1,7,length=3) • x<-rep(1, 3) • x<-rep(c(1,2), c(2,3)) • ベクトルの長さを計算(データ数の計算) • length(x) 参考: RjpWiki→Tips紹介→ベクトル・行列・配列・リストTips大全→ベクトルTips大全

  13. ベクトルの成分の抽出 • x<--5:5 #1から10までの数列 • x[1] • x[-2] • x[c(1,3)] • y<-x[x>0] • y<-x[x>0 & x<3]

  14. 比較演算子と論理演算子

  15. ベクトル生成 x<--1:1 y<-2:4 計算 sum(x) sum(y) x+y x*y x%*%y ベクトルの計算

  16. matrix(), matrix(0,2,3) x<-1:9 z1<-matrix(x,3,3) w1<-matrix(x,3,3,byrow=T) cbind(), rbind(), y<--1:-9 z2<-cbind(x,y) w2<-rbind(x,y) 行列を作る 参考: RjpWiki→Tips紹介→ベクトル・行列・配列・リストTips大全→行列Tips大全

  17. 行列の情報 • dim() • dim(z2) • dim(w2) • colnames(), rownames() • colnames(z2)<-c(“成分1”, “成分2”) • rownames(z2)<-letters[1:dim(z2)[1]]

  18. 行列に関する関数と演算子

  19. 計算 solve(A) A+B A-B A/B A*B A%*%B A%o%B apply(A, 2, sum) 行列演算 • 行列作成 • A <- matrix(c(3,1,4,1,2,7,1,5,1),3,3) • B <- matrix(c(1:9), 3,3)

  20. データフレームとは • 行列に似ている. • 各行・列はラベルを必ず持ち,ラベルによる操作が可能である点が普通の行列と異なる. • 各列の要素の型はバラバラでも構わないので,データをデータフレームに変換することで統計解析がやりやすくなる. • 行列演算ができなくなるので,行列演算をする場合には行列に戻すことが必要となる.

  21. データフレーム 参考: RjpWiki→Tips紹介→データフレームTips大全

  22. データフレーム作成 • 行列からデータフレーム • A<- matrix(c(3,1,4,1,2,7,1,5,1),3,3) • C<-data.frame(A) • attach(C) • X1 • C$X1 • 行列に戻す • D<-data.matrix(C)

  23. 外部ファイルからのデータフレーム作成と出力外部ファイルからのデータフレーム作成と出力 • テキストファイルから入力 • #データファイルのあるディレクトリの指定 • setwd(“D:/test/”) • data<-read.table(“data.txt”,header=TRUE) • テキストファイルへの出力 • write.table(data, “data2.txt”) • foreignパッケージの使用 • library(foreign) 参考: RjpWiki→Tips紹介 →データフレームTips大全 参考: RjpWiki→単語検索

  24. データフレーム操作 • あたらしい要素を加える. • id<-1:length(data[,1]) • data2<-data.frame(data, id) • 要素同士で演算したものを加える. • data3<-data.frame(data,obs=data$hdis/data$total) • 特定の条件を満たすデータを抽出する. • data4<-subset(data, data[“bpress"]==2) • ある要素に基づいてデータを要約する. • data5<-aggregate(data[,c("hdis","total")],data.frame(bpress=data[,"bpress"]),FUN=sum)

  25. 分布 接頭辞:d(確率),p(確率点),q(パーセンタイル点),r(乱数) 参考: RjpWiki→Tips紹介→Rにおける確率分布

  26. 例:正規分布 • 乱数発生 • #データ数100, 平均1,分散2 • x<-rnorm(100, 1, 2) • 標準正規分布片側95%点 • qnorm(0.95,0,1) • 累積確率分布関数値 (p値の計算など) • dnorm(1.96,0,1)

  27. 基本統計量の計算 • 平均mean(), 分散var(), 標準偏差sd(), 相関係数cor() • x<-rnorm(100, 3, 0.1) • y<-rnorm(100,3,1) • mean(x) • var(x) • sd(x) • summary(x) • cor(x,y)

  28. 離散変数の図示 • 準備 • x <- c(1,1,3,1,4,1,1,2,1,2) • freq.x <- table(x) • per.x <- freq.x/sum(freq.x) • 度数分布図 • barplot(freq.x) • 積み上げ棒グラフ • barplot(matrix(freq.x, nrow(freq.x)), beside=F) • 帯グラフ • barplot(matrix(per.x, nrow(per.x)), horiz=T, beside=F) • 円グラフ • pie(freq.x)

  29. 連続変数の図示 • データ • point <- c(68,70,55,78,84,95,66,72,92,74) • ヒストグラム • hist(point, main="Histgram") • 正規確率プロット • qqnorm(point, main="Normal QQplot") • 幹葉表示 • stem(point, scale=2) • 箱ひげ図 • boxplot(point, main="Box and whisker plot") Rによる統計解析の基礎 中澤 港 (著) (2003/10), ピアソンエデュケーション

  30. 多変量データの図示 • データ • x<-iris[1:4] • 散布図 • plot(x$Sepal.Length, x$Sepal.Width) • 散布図行列 • pairs(x) 参考: RjpWiki→Tips紹介→グラフィックス参考実例集

  31. グラフィックパラメータ • グラフィックパラメータの書き方は,どの作図関数においても共通. • 主タイトル • plot(x$Sepal.Length, x$Sepal.Width, main="Scatter Plot") • 軸ラベル • plot(x$Sepal.Length, x$Sepal.Width, xlab="Sepal Length", ylab="Sepal Width") • 軸の範囲 • plot(x$Sepal.Length, x$Sepal.Width, xlim=c(2,10), ylim=c(0,5)) 参考: RjpWiki→Tips紹介→Rのグラフィックスパラメータ

  32. グラフの出力 • コピー • グラフィックウィンドウを選択し,カメラ印のボタンをクリック. • 貼り付け • ワードなどの貼り付けボタンをクリック • 画像ファイルとして保存 • メニュー「ファイル」→「別名で保存」

  33. 統計手法(一部) 参考: RjpWiki→単語検索

  34. 例:回帰分析 • 例を用いる. • example(lm)#たくさん結果が出てわかりにくい • ?lm • #exampleを一部分だけをコピー&ペースト • ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14) • trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69) • group <- gl(2,10,20, labels=c("Ctl","Trt")) • weight <- c(ctl, trt) • anova(lm.D9 <- lm(weight ~ group)) • summary(lm.D90 <- lm(weight ~ group - 1))# omitting intercept

  35. 回帰分析の結果を見る • 通常 • lm.D90 <- lm(weight ~ group) • lm.D90 • もっと詳しく • summary(lm.D90) • もっともっと詳しく • attributes(lm.D90) • lm.D90$coefficients • lm.D90$residuals • lm.D90$effects • lm.D90[attributes(lm.D90)$names]

  36. 離散データ解析(一部) 参考: RjpWiki→Tips紹介 → Rの古典的検定用関数一覧

  37. 例:カイ二乗検定,Fisherの正確検定 • chisq.testのヘルプより(一部改) • x <- matrix(c(12, 5, 7, 7), nc = 2) • chisq.test(x) • fisher.testのヘルプより • TeaTasting <-matrix(c(3, 1, 1, 3),nr = 2, dimnames = list(Guess = c("Milk", "Tea"), Truth = c("Milk", "Tea"))) • fisher.test(TeaTasting, alternative = "greater")

  38. パッケージの使い方 • インストール(インターネット経由) • メニュー「パッケージ」→「パッケージのインストール」 • パッケージを読み込むと,そのパッケージに含まれる統計手法を使うことができる. • コンソールに入力(lirary(パッケージ名)) • library(mva) • library(tree) • メニューから • 「パッケージ」→「パッケージの読み込み」

  39. パッケージ紹介(一部) 参考: RjpWiki→Rに関する各種文献とその訳

  40. 繰り返し for x<--3:6 s<-0 for(i in 1:10) {s<-s+x[i]} s 条件実行 if p<-0 for(i in 1:10) {if(x[i]>0) p<-p+1} p 繰り返し処理,条件分岐 参考: RjpWiki→Tips紹介→R プログラミング Tips 大全

  41. 自作関数 • function • mysum<-function(x) • {s1<-0 • for(i in 1: length(x)) • {s1<-s1+x[i]} • } • x<--3:6 • s2<-mysum(x) • s2 参考: RjpWiki→Tips紹介→Rの関数定義の基本

  42. 練習問題 • ファイル「RESTING.txt」のデータをRに読み込み,restingという名のデータフレームを作成しなさい. • Heightの単位をcmからmに変換し(1/100する),Height2という名の変数をつけ,データフレームrestingに追加しなさい. • Height2のヒストグラムを作成しなさい.横軸のラベルを「身長(m)」に変更しなさい. • Pulseの箱ひげ図を作成しなさい. • Height2とPulseの散布図を作成しなさい.横軸の範囲を1.4から2.0に,縦軸の範囲を50から120に変更しなさい. • Pulseを応答変数,Height2を説明変数として,回帰分析をしなさい. • 関数abline()を使って,5で作成した散布図の中に,6で求めた回帰直線を引きなさい.

More Related