2014年度 分子生体機能学実験 講義の資料置き場 Internet Explorerを起動しGoogleを使って「高橋広夫」で検索 インフォマティクス編 (第2回目配付資料) Googleか確認 (bingではない) 2014/05/28 2ページ目 ぐらいにあるかも 園芸学研究科 応用生命化学領域 髙橋広夫 1 講義の資料置き場 2 講義の資料置き場 分子生体機能学実験をクリック 「講義の資料置き場」をクリック 3 4 Rのインストールについて① ① Googleで 「R project」で検索 Rのインストール編 5 1番目の「The R Project for Statistical Computing」をクリック 6 Rのインストールについて② Rのインストールについて③ ② R Projectのホームページ ③ R Projectのダウンロードベージ 「 CRAN 」をクリック 「0-Cloud」をクリック 7 Rのインストールについて④ 8 Rのインストールについて⑤ ④ 0-CloudのR Projectのダウンロードベージ ⑤ 0-CloudのR Projectのダウンロードベージ(Windows版) Windows版を選択し、クリック Rの基本パッケージ(base)を選択し、クリック 9 Rのインストールについて⑥ 10 Rのインストールについて⑦ ⑥ 0-CloudのR Projectのダウンロードベージ(Windows版) ⑦デスクトップに保存されたファイルからインストール デスクトップ上に保存された 上記のアイコンをクリック 最新版は R 3.1.0 「実行」 Rの基本パッケージ(base)をクリックしてダウンロード 11 「次へ」 「OK」 「次へ」 「次へ」 Message translationの チェック確認 「次へ」 12 Rのインストールについて⑧ Rの基本画面 ⑧デスクトップに保存されたファイルからインストールの続き 「次へ」 「次へ」 「次へ」 インストール 「クリック」 「完了」 何か入力するときはここ。 Rが起動する 13 14 R言語 命令 中央値 set.seed(1) data <- runif(10, min=0, max=10) windows() plot(data, pch=21, bg=2, col=2, cex=2, ylim=c(0,10)) abline(median(data), 0, lw=2, col=4) 統計の基礎 [10] 9.4 [9] 9.1 [8] 9.0 (プログラム部分のみ) [7] 6.6 [5] 5.7 [6] 6.3 [4] 3.7 [3] 2.7 [2] 2.0 [1] 0.62 15 R言語 中央値 数値を小さい順に並べ 順位が真ん中になるもの (順位が真ん中になるもの が2つある場合は、足して 2で割る) 今回の場合は、5番目と 6番目の数字を足して 2で割ったもの 16 R言語 画面を左右2分割にする 平均値と中央値とはずれ値 (覚えなくて良い) windows() par( mar=c(4,4,1,1), mfrow=c(1,2)) set.seed(1) data <- runif(10, min=0, max=10) plot(data, pch=21, bg=2, col=2, cex=2, ylim=c(0,50)) abline(mean(data), 0, lw=2,col=3) abline(median(data), 0, lw=2,col=4) 10個目は 乱数でデータを9個 50という数値にする (最初の9個は上と同じ) set.seed(1) data <- runif(9, min=0, max=10); data <-c(data, 50) plot(data, pch=21, bg=2, col=2, cex=2, ylim=c(0,50)) abline(mean(data), 0, lw=2,col=3) abline(median(data), 0, lw=2,col=4) プロット描写関数 シンボルの形 (21は丸) シンボルの枠の色 (2は赤) y軸の範囲 (0~10) シンボルの塗りつぶし色 (2は赤) 命令 plot(data, pch=21, bg=2, col=2, cex=2, ylim=c(0,10)) 丸の大きさ 直線描写関数 ラインの太さ 切片 abline(median(data), 0, lw=2, col=4) ラインの色 3は緑、4は青 傾き 17 18 推定の補足(t分布) R言語 はずれ値 平均値 10.5 中央値 6.45 命令 結果 平均値 5.53 中央値 6.01 正規分布に似ているが すそが広がっている 標本数(n)が小さいときは、 (生物)実験は、正規分布にならずt分布になる (n∞のとき t分布は正規分布に一致する) xの範囲を-4から4まで x <- seq(-4, 4, 0.01) 0.01刻みで定義 plot(NULL, xlim=c(-4,4), ylim=c(0,0.4), xlab="", ylab="") curve(dnorm, -4, 4, type="l", col = "red", lw=3, add=T) curve(dt(x, 10),-4, 4, type="l", col = "green", lw=3, add=T) curve(dt(x, 5),-4, 4, type="l", col = "blue", lw=3, add=T) abline(h=0, lw=3, col="black") 平均値と中央値とはずれ値 赤: 正規分布(平均0,標準偏差1) 緑: 自由度10のt分布 青: 自由度5のt分布 平均値は、はずれ値の影響を大きくうける。 それに対して、中央値は、はずれ値に対して安定である。 19 20 R言語 正規分布の信頼区間 プロット描写関数(枠だけ) 描写する データ無し y軸の範囲 (0~0.4) 95%の上側信頼限界 (下側累積確率97.5%) x軸のラベル y軸のラベル plot(NULL, xlim=c(-4,4), ylim=c(0,0.4), xlab="", ylab="") 命令 x軸の範囲 (-4~4) 色は数値でなくても色 の名前(英語)で指定可 ラインの太さ 関数形描写関数 curve(dnorm, -4, 4, type="l", col = "red", lw=3, add=T) 関数(正規分布) (d: distribution) (norm: normal) x軸の範囲 (-4~4) 重ね合わせ 95%の下側信頼限界 (下側累積確率2.5%) q.upper <- qnorm(0.975); q.lower <- qnorm(0.025) limit.x <- c(-3.5,3.5) x軸の左端と右端 len <- 100 塗りつぶし領域の分割数 x = seq(q.lower, q.upper, length= len) y = dnorm(x) plot(NULL, xlim=limit.x, ylim=c(0,0.4), xlab="", ylab="") polygon(c(x[1],x,x[len]), c(0,y,0), col="red") curve(dnorm, -3.5, 3.5, lwd=3, col="blue", add=TRUE) abline(h=0, lw=3, col="black") abline(v=q.upper, lw=3, col="green") (下側累積確率97.5%) abline(v=q.lower, lw=3, col="green") (下側累積確率2.5% 21 22 R言語 正規分布の信頼区間 塗りつぶし関数 95%信頼区間 の上側限界 95%信頼区間 の下側限界 qnorm(0.025) -1.96 これより下側を 積分すると2.5% plot(NULL, xlim=c(0,4), ylim=c(0,4), xlab="", ylab="") polygon(c(0,2,3,4,4), c(0,2,1,4,0), col="red") 色指定 x軸の座標 qnorm(0.975) 正規分布 面積を 積分する と95% 枠をつくる D y軸の座標 1.96 これより上側を 積分すると2.5% B A B CDE C X座標 0 2 3 4 4 Y座標 0 2 1 4 0 A E 23 24 t分布の信頼区間 t分布の信頼区間 命令 t分布の自由度(今回は5) t分布の信頼限界 df <- 5 q.upper <- qt(0.975,df); q.lower <- qt(0.025,df) limit.x <- c(-3.5,3.5) len <- 100 x = seq(q.lower, q.upper, length= len) y = dt(x,df) t分布の概形 plot(NULL, xlim=limit.x, ylim=c(0,0.4), xlab="", ylab="") polygon(c(x[1],x,x[len]), c(0,y,0), col="red") curve(dt(x, df),-3.5, 3.5, type="l", col = "blue", lw=3, add=T) abline(h=0, lw=3, col="black") abline(v=q.upper, lw=3, col="green") abline(v=q.lower, lw=3, col="green") 95%信頼区間 の上側限界 95%信頼区間 の下側限界 qt(0.025,df) -2.57 これより下側を 積分すると2.5% qt(0.975,df) 自由度5 のt分布 2.57 これより上側を 積分すると2.5% 面積を 積分する と95% 25 26 t分布と正規分布の信頼区間 統計学の基礎 問題(1) (問い) ある平均値が100、標準誤差(SE)が10のとき、 自由度10のt分布を用いて平均値の99%, 95%, 90% 信頼区間を有効桁数3桁で算出せよ。 自由度 df <- c(1,5,10,15,20,50,100,1000,10000) t分布の90%信頼区間の 下側限界(5%)と上側限界(95%) qt(0.025, df); qt(0.975, df) t分布の95%信頼区間の 下側限界(2.5%)と上側限界(97.5%) 命令 qt(0.050, df); qt(0.950, df) qt(0.005, df); qt(0.995, df) 課題の書式 qnorm(0.050); qnorm(0.950) ※課題はメールで高橋<[email protected]>へ送る。 (メール提出の際は、タイトル「分子生体機能学バイオインフォ編2_学籍番号(半角)_名前(全角)」) 「Bioinfo20140528_学籍番号(半角)_名前(全角).xls」という名前で添付) t分布の99%信頼区間の 下側限界(0.5%)と上側限界(99.5%) 正規分布の90%信頼区間の 下側限界(5%)と上側限界(95%) qnorm(0.025); qnorm(0.975) 正規分布の95%信頼区間の 下側限界(2.5%)と上側限界(97.5%) qnorm(0.005); qnorm(0.995) 正規分布の99%信頼区間の 下側限界(0.5%)と上側限界(99.5%) 28 27 Rにおけるエラーバーのつけかた t分布と正規分布の信頼区間 統計学の基礎 結果 > df <- c(1,5,10,15,20,50,100,1000,10000) > qt(0.050, df); qt(0.950, df) [1] -6.313752 -2.015048 -1.812461 -1.753050 -1.724718 [6] -1.675905 -1.660234 -1.646379 -1.645006 [1] 6.313752 2.015048 1.812461 1.753050 1.724718 1.675905 [7] 1.660234 1.646379 1.645006 > qt(0.025, df); qt(0.975, df) [1] -12.706205 -2.570582 -2.228139 -2.131450 -2.085963 [6] -2.008559 -1.983972 -1.962339 -1.960201 [1] 12.706205 2.570582 2.228139 2.131450 2.085963 [6] 2.008559 1.983972 1.962339 1.960201 > qt(0.005, df); qt(0.995, df) [1] -63.656741 -4.032143 -3.169273 -2.946713 -2.845340 [6] -2.677793 -2.625891 -2.580755 -2.576321 [1] 63.656741 4.032143 3.169273 2.946713 2.845340 [6] 2.677793 2.625891 2.580755 2.576321 > qnorm(0.050); qnorm(0.950) [1] -1.644854 [1] 1.644854 > qnorm(0.025); qnorm(0.975) [1] -1.959964 [1] 1.959964 > qnorm(0.005); qnorm(0.995) [1] -2.575829 [1] 2.575829 パッケージgregmiscのインストールする。 install.packages(c("gregmisc")) でもok 29 30 Rにおけるエラーバーのつけかた Rにおけるエラーバーのつけかた 命令 library(gregmisc) x<-c(30,50,15,55,50,40,52,55,58,60,55,58) y<-c(0,0,0,10,10,10,30,30,30,100,100,100) tmp <- split(x, y) means <- sapply(tmp, mean) stdev <- sapply(tmp, sd) n <- sapply(tmp,length) ciw <- qt(0.975, n-1) * stdev / sqrt(n) windows() par( mar=c(4,4,1,1), mfrow=c(1,2)) plotCI(x=means, uiw=ciw, col="black", barcol="blue", lwd=1, type="l") plotmeans( x ~ y , p=0.95) plotCIの別解(信頼区間を自動で計算) 31 32 R言語 R言語 split関数とsapply関数 平均値の信頼区間の計算 命令 命令 x<-c(30,50,15,55,50,40,52,55,58,60,55,58) y<-c(0,0,0,0,0,1,1,1,1,2,2,2) (tmp <- split(x, y)) (means <- sapply(tmp, mean) ) 結果 結果 > x<-c(30,50,15,55,50,40,52,55,58,60,55,58) > y<-c(0,0,0,0,0,1,1,1,1,2,2,2) > (tmp <- split(x, y)) $`0` ベクトルyに応じて [1] 30 50 15 55 50 ベクトルxを $`1` グループに分割 [1] 40 52 55 58 $`2` [1] 60 55 58 グループごとに > (means <- sapply(tmp, mean) ) 0 1 2 平均値を算出 40.00000 51.25000 57.66667 z <- c(40,52,55) ; mean(z) ( n <-length(z) ) ( stdev <- sd(z) ) ( ciw <- qt(0.975, n-1) * stdev / sqrt(n) ) > z <- c(40,52,55) ; mean(z) [1] 49 平均値 平均値の点推定値 49 > ( n <-length(z) ) 95%信頼区間 [1] 3 49±20 データ数 > ( stdev <- sd(z) ) [1] 7.937254 29~69 標準偏差 > ( ciw <- qt(0.975, n-1) * stdev / sqrt(n) ) [1] 19.71723 標準誤差 33 34 Rを使った検定例 問題(2) 10個の測定値がある。母平均が10であるかどうか検定しなさい。 また,95% 信頼区間を求めなさい。(1標本t検定) [測定値: 9.8, 10.2, 9.5, 7.5, 10.4, 10.5, 10.3, 11.3, 7.7, 8.7] 命令 (問い) 30,40,52,55,90,99の6個のデータがある。この データの平均値の点推定値と99%信頼区間を有効数字 に注意して計算せよ (信頼区間は○~○と記述) 課題の書式 結果 ※課題はメールで高橋<[email protected]>へ送る。 (メール提出の際は、タイトル「分子生体機能学バイオインフォ編2_学籍番号(半角)_名前(全角)」) 「Bioinfo20140528_学籍番号(半角)_名前(全角).xls」という名前で添付) 35 x <- c(9.8, 10.2, 9.5, 7.5, 10.4, 10.5, 10.3, 11.3, 7.7, 8.7) t.test(x, mu=10, conf.level = 0.95) > x <- c(9.8, 10.2, 9.5, 7.5, 10.4, 10.5, 10.3, 11.3, 7.7, 8.7) > t.test(x, mu=10, conf.level = 0.95) p ≧ 0.05.したがって、 One Sample t-test 10と差があるとは言えない data: x t = -1.037, df = 9, p-value = 0.3268 alternative hypothesis: true mean is not equal to 10 95 percent confidence interval: 95%信頼区間は 8.695597 10.484403 8.695597~10.484403 sample estimates: mean of x 平均値の点推定値は9.59 9.59 したがって、帰無仮説は棄却出来ない 36 Rを使った検定例(正規性検定) Rを使った検定例(対応無しt検定) 10個測定値を2セット分の合計20個分のデータが正規分布に従うか 検定しなさい (1標本コルモゴロフスミルノフ検定 ) 。 測定値(1回目)は、set.seed(1); x <- rnorm(10, mean=10, sd=1) 測定値(2回目)は、set.seed(1); y <- rnorm(10, mean=11, sd=1) として、Rで乱数により生成しなさい。 > set.seed(1); x <- rnorm(10, mean=10, sd=1) > set.seed(1); y <- rnorm(10, mean=11, sd=1) > z <- c(x, y) > ks.test(z,"pnorm",mean=mean(z),sd=sd(z)) One-sample Kolmogorov-Smirnov test data: z p>0.05なので、正規分布から D = 0.1049, p-value = 0.9638 はずれるとは言えない。 alternative hypothesis: two-sided set.seed(1); x <- rnorm(10, mean=10, sd=1) set.seed(2); y <- rnorm(10, mean=11, sd=1) t.test(x, y) 0.01<p < 0.05.したがって、 結果 結果 厳密には、 有意なものを 除外した解析を 行いたい場合は、 偽陰性を 考慮する必要 がある (しかし、現実には 困難であるため 有意水準は 大きく(10%以上 に)設定する) 命令 命令 set.seed(1); x <- rnorm(10, mean=10, sd=1) set.seed(1); y <- rnorm(10, mean=11, sd=1) z <- c(x, y) ks.test(z,"pnorm",mean=mean(z),sd=sd(z)) 10回の測定を2セット行った。この2セットの測定の平均値に差が あるかどうかを対応無しt検定により検定しなさい。ただし、 測定値(1回目)は、set.seed(1); x <- rnorm(10, mean=10, sd=1) 測定値(2回目)は、set.seed(2); y <- rnorm(10, mean=11, sd=1) として、Rで乱数により生成しなさい。 37 Rを使った検定例(U検定) > t.test(x, y) 有意水準1%では棄却出来ないが Welch Two Sample t-test 5%とすれば棄却出来る data: x and y t = -2.7148, df = 17.107, p-value = 0.01465 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -1.9170560 -0.2408417 sample estimates: mean of x mean of y 10.13220 11.21115 38 Rを使った検定例(対応有りt検定) 10回の測定を2セット行った。この2セットの測定の中央値に差が あるかどうかをU検定により検定しなさい。ただし、 測定値(1回目)は、set.seed(1); x <- rnorm(10, mean=10, sd=1) 測定値(2回目)は、set.seed(2); y <- rnorm(10, mean=11, sd=1) として、Rで乱数により生成しなさい。 10回の測定を2セット行った。この2セットの測定の平均値に差が あるかどうかを対応有りt検定により検定しなさい。ただし、 測定値(1回目)は、set.seed(1); x <- rnorm(10, mean=10, sd=1) 測定値(2回目)は、set.seed(2); y <- rnorm(10, mean=11, sd=1) として、Rで乱数により生成しなさい。 命令 命令 set.seed(1); x <- rnorm(10, mean=10, sd=1) set.seed(2); y <- rnorm(10, mean=11, sd=1) wilcox.test(x, y) set.seed(1); x <- rnorm(10, mean=10, sd=1) set.seed(2); y <- rnorm(10, mean=11, sd=1) t.test(x, y, paired = T) 0.01<p < 0.05.したがって、 結果 結果 0.01<p < 0.05.したがって、 > wilcox.test(x, y) 有意水準1%では棄却出来ないが Wilcoxon rank sum test 5%とすれば棄却出来る data: x and y W = 17, p-value = 0.01150 alternative hypothesis: true location shift is not equal to 0 39 Rを使った検定例(U検定) 10回の測定を2セット行った。この2セットの測定の中央値に差が あるか どうかをウィルコクソンの符号付順位和により検定しなさい。ただし、 測定値(1回目)は、set.seed(1); x <- rnorm(10, mean=10, sd=1) 測定値(2回目)は、set.seed(2); y <- rnorm(10, mean=11, sd=1) として、Rで乱数により生成しなさい。 命令 set.seed(1); x <- rnorm(10, mean=10, sd=1) set.seed(2); y <- rnorm(10, mean=11, sd=1) wilcox.test(x, y , paired=T) 結果 0.01<p < 0.05.したがって、 > wilcox.test(x, y , paired = T) 有意水準1%では棄却出来ないが Wilcoxon signed rank test 5%とすれば棄却出来る data: x and y V = 7, p-value = 0.03711 alternative hypothesis: true location shift is not equal to 0 41 > t.test(x, y, paired = T) 有意水準1%では棄却出来ないが Paired t-test 5%とすれば棄却出来る data: x and y t = -2.4534, df = 9, p-value = 0.03655 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -2.07379750 -0.08410023 sample estimates: mean of the differences -1.078949 40
© Copyright 2024 ExpyDoc