2018.6.19

2018年度生物測定基礎実験

応用生物学基礎実験


ピスタチオ計測データの解析

ピスタチオ長さ計測データダウンロード

「良い」計測方法

 先週は、市販5社のピスタチオオ最大長の分布を、物差し、ノギス、バーコード、 画像処理の4種類の計測方法を用いて計測結果を比較検討した。
 良い計測とは、労力、時間などの計測コストが低くかつ精度の高い計測方法である。 画像処理の計測コストが低いが、精度に関してはノギスが高そうである。 しかし、他の方法 はどの程度の精度を持つかは不明である。そこで、計測手法間の精度比較を行ってみる。
 いま、計測対象の真の形質値を x とし、その測定値を y とおくと、

y = x +δ+ e

とおける。ただし、δは偏り(バイアス)、e は測定誤差で、 その分散 Var[e] =σe2 とする。 バイアスは計測方法の「くせ」による系統的な誤差値で、 真の値を過大評価もしくは過少評価したりする傾向がある時に現れる。
 良い計測とは、不偏(バイアスが無い)、すなわち、δ= 0 で、 測定誤差分散 σe2 が小さい方法である。 真の形質値を x の分布の平均を E[x] =μ、 分散 Var[x] =σ2 であるとする。すると、測定値 y の 平均と分散は、それぞれ、

E[y] = E[x] +δ+ E[e] = μ+δ
Var[y] = Var[x] + Var[e] = σ2 + σe2

となる。
 これより、測定値 y の分散、もしくは標準偏差の小さい計測方法が 誤差分散が小さいので、測定誤差が少ない手法であり、優れていることがわかる。 また、測定値 y の平均値を手法間で比較し、系統的な偏りがあるかどうかを みることで、バイアスの有無が検討できる。別の考え方として、異なる手法で計測したとき、 他の計測手法からの値と大きく異なるような値を出す計測手法はあまり信用できない。反対に、 似たような値を出すような計測手法どうしは、それだけ信用できると言える。
data <- read.csv("data.csv")
head(data)
bx <- levels(data$brand)
bag <- rep(0, nrow(data))	# bag というデータ(ブランドごとに1,2を付与)
for(j in 1:length(bx)){
    v <- which(data$brand==bx[j])
    bag[v] <- c(rep(1,15), rep(2,15))
}
bag <- factor(bag)
data <- data.frame(data, bag)
head(data)
attach(data)			# dataの使用を宣言
brand_group <- paste(brand, group, sep=":")
# ブランド、班ごとの標準偏差。
# 標準偏差が小さい測定方法が望ましい。
res1 <- tapply(ruler, brand_group, sd, na.rm = T); res1 	# ものさし
mean(res1)								# ものさしの標準偏差の平均							
# バイアスを見るため、ブランド、班ごとの平均を見る。
# 理想的には同じブランドを計測した2班が平行直線になっているのが望ましい。
# 上下にぶれるのは良くない計測方法である。
# また、青と赤は同じブランドの異なる2袋なので値はほぼ同じであると考えられる。
levels(brand)
# donki
bx <- "donki"
v <- which(brand==bx)
y <- data[v,]
a <- unique(y$group)
m1 <- apply(y[bag[v]==1, 3:6], 2, mean, na.rm=T)
m2 <- apply(y[bag[v]==2, 3:6], 2, mean, na.rm=T)
plot(1:4, m1, type="n", xaxt="n", xlab="", ylab="Length", ylim=range(c(m1,m2)))
axis(side=1, at=1:4, labels=names(m1))
lines(1:4, m1, type="b", col="red")
lines(1:4, m2, type="b", col="blue")
legend("topleft", legend=a, pch=1, col=c("red","blue"))
title(main=paste("Mean length of", bx, sep=" "))
detach(data)	# dataの使用終了

課題1

 測定方法ごとの測定値の平均や標準偏差の値からみると、良い計測方法は何か。

ノギスデータを用いた解析

ブランドごとの袋間の違い

 ピスタチオのサイズが同じブランドの袋ごとに違いがあるかを調べる。品質管理の観点からみると ブランド内の袋間に差がなく均一であることが望ましい。ブランドごとに 2 つの袋間で t 検定を行い、 有意な違いが検出されたブランドではピスタチオを買うときは他の袋とよく見比べて買った方が良い ことがわかる。しかし、計測方法の誤差やバイアスによる可能性も否定できない。

分散分析

 ピスタチオのサイズがブランドにより異なるか、また、同じ ブランドの袋ごとに違いがあるかを一気に調べるには分散分析をすればよい。
 いま、i 番目のブランド(i = 1,…,5)の j 番目の袋(j = 1, 2)内の k 番目の ピスタチオ(k = 1,…,15)のサイズの計測値を Xijk とおくと、 Xijk

Xijk=μ+αi+βij+eijk

とおける。ここで、μは総平均、αi はブランドの効果、 βij は ブランドごとの袋の効果、eijk は誤差項で、 eijk 〜 N (0, σ2) を仮定する。 このようにブランド(主効果)ごとに標本の単位(袋)があり、この単位(袋)の中に 個体があるようなモデルをネスト(枝分かれ)分散分析 (Nested Analysis of Variance)という。
 brandごとにbagがあるときのvalueに対するネスト分散分析を行うには、aov()を用い、
aov(value ~ brand/bag)
とすればよい。
 ブランドごとの袋の効果(同じブランドで袋ごとにサイズが異なるか)は、誤差平均平方 との比較で検定することができるが、ブランドの効果(ブランドによりサイズに違いがあるか) を誤差平均平方と比較するのは正しくない。ブランドの効果平均平方はブランドごとの袋の効果の 平均平方と比較しなければならない。これは、分散分析で誤差を指定するError()を用い、
aov(value ~ brand + Error(brand:bag))
とすれば行える。ブランド内の袋のばらつきを超えてブランド間でのばらつき が大きくないとブランド間の効果は有意とならない。このとき、ブランドごとの袋の数が少ない と F 分布の分母自由度が小さいので検出力は低いものになってしまう。
 実際、各ブランドから 1 袋しかサンプリングしなかった場合は、 枝分かれモデルを適用することはできず、袋の値をブランド全体の値とみなすしかない。 今回の実験ではブランドごとに 2 袋しかないので、枝分かれモデルではブランドの効果は有意 とならないかもしれない。このような場合、あまり推奨できないが、袋データをプール して通常の 1 元配置として解析することも考えられる。すなわち、

Xij=μ+αi+eij、j = 1,…,30

のようにする。これは、
aov(value ~ brand)
とすればよい。

ブランド間の多重比較(multiple comparison)

 1 元配置分散分析でブランド間に有意な差があると認められると、どのブランド間に差があるのかが 知りたくなる。この場合すべてのブランド間で t 検定を行うことになるが、ブランドの数が多いと たくさんの t 検定を行うことになってしまう。たとえば、ブランドの数が 10 であったとすると、t 検定の回数は 10C2 = 45 回になる。有意水準 5 %検定 は、有意な違いが無いときでも 100 回検定を行うと 5 回は有意な違いを検出(ゴーストを拾う、偽陽性とも言う)してしまう。このように、たくさんの検定を行うと,たまたま有意になる確率が 名目上の有意水準(たとえば 5 %)を超えてしまう恐れがある.これが、多重比較である。現在では、 コンピュータにより多くの検定を簡単に行うことができるので、以前に比べて多重比較の問題を考慮しなければ ならないと考えられる。
 いま,処理平均 μi と μj の比較を行う場合を考える. 2 つの処理平均の差 μi - μj は, dij = X-i. - X-j. で推定される. 帰無仮説(αi = αj = 0)のもとで,dij の平均と分散は,
model
となるので,分散 σ2 をその推定量 s2 で置き換えた 検定統計量 tij は,
model
のように自由度 n - a の t 分布に従うので dij = 0 の検定を行うことができる.
 有意水準 α'(たとえば 5 %) の検定は, 自由度 n - a の t 分布の 1 - α'/2(たとえば 97.5 %) 分位点, t(n - a)1 - α'/2 を用いて,
model
が成り立つとき μi と μj の効果に違いがあると判定される.ここで, LSD(Least squared distance)は最小有意差という量で,以前は,α' = 0.05 として,処理効果のある組み合わせ を見つけるためよく用いられていたが,最近は,多重比較を考慮に入れた有意水準の補正を考えるのが普通 なので,単純な LSD は使用しない方が良いと思われる.
 いま,a 水準の主効果があったとすると,すべての組み合わせは r = a(a - 1)/2 通りあり,「後付け」の 検定を行うときは,全体で r 回の検定を行っていると考えなければならない. R でも 対比較では多重比較による有意確率の補正が簡単に行える.これは、
pairwise.t.test(value, brand)
のようにすればよい。

attach(data)			# dataの使用を宣言
value <- nogisu
boxplot(value ~ bag:brand)
# "donki" 内での袋間の違いの検定
v <- which(brand=="donki")
t.test(value[v] ~ bag[v])
# ネスト分散分析
# ブランド、袋間の検定
summary(aov(value ~ brand/bag))
# ブランド間の検定
# 警告メッセージは無視してよい。
summary(aov(value ~ brand + Error(brand:bag)))
# ブランド内袋データを一緒にする。
boxplot(value ~ brand)
summary(fm <- aov(value ~ brand))
# 多重比較
pairwise.t.test(value, brand, pool.sd = FALSE)
# Tukey の HSD
TukeyHSD(fm, "brand")
plot(TukeyHSD(fm, "brand"))
detach(data)	# dataの使用終了

課題2

ピスタチオ好みデータの解析

ピスタチオ好みデータダウンロード

Thurstone の一対比較法

 いま、対象Aに対するある集団の好み得点 xA が正規分布 N(a, 1/2) に従い、 対象Bに対する好み 得点 xB が N(b, 1/2), a > b, に従うとする。すると、 対象Aに対する得点と対象Bに対する得点差は、正規分布の差の分布なので、

xA - xB 〜 N(a - b, 1)

という正規分布に従う。
norm1 norm2
 いま、集団の85%がAを好むというデータが得られた(図の灰色部分が85%)とすると、 a - b の値(右図の平均)がわかり、ab の平均を 0 (a + b = 0) とおくと、好み得点の平均 ab を求める ことができる。すなわち、

qnorm(0.85) = 1.036 → a - b = 1.036, a + b = 0 → a = 0.518, b = -0.518

と推定できる。
 ここで、比較したい対象が m 個あったとすると、m(m - 1)/2 通り の比較を行って、対象間の好み得点の差を求め、これらを平均することで各対象の好み得点 の平均を求めることがでいる。これを、Thurstone の一対比較法と言う。

一対比較法の例

 A、B、C、D、Eの5対象に対し、10人の被験者による一対比較法のデータが以下のようで あったとする。各行がその対象を好んだ人数で各列は好まなかった人数である。たとえば、 AとBの比較では、Aを好んだのが9名、Bを好んだのが1名であり、AとCの比較では、Aを好んだ のが7名、Cを好んだのが3名である。

 A  B  C  D  E 
A  0 9 7 7 6
B  1 0 5 3 4
C  3 5 0 7 6
D  3 7 3 0 4
E  4 6 4 6 0

以下のスクリプトで各対象の平均得点を求めると、Aが最も好まれ、Bが最も好まれて いないことが分かる。
A <-	c(0,	 9,	 7,	 7,	 6)
B <-	c(1,	 0,	 5,	 3,	 4)
C <-	c(3,	 5,	 0,	 7,	 6)
D <-	c(3,	 7,	 3,	 0,	 4)
E <-	c(4,	 6,	 4,	 6,	 0)
thurs <- rbind(A,B,C,D,E)
colnames(thurs) <- c("A","B","C","D","E")
diag(thurs) <- NA
thurs <- thurs/10
thurs
qn_thurs <- qnorm(thurs)
x <- apply(qn_thurs, 1, mean, na.rm=T)
sort(x, decreasing=T)

一対比較法の一部実施

 5種類の対象の比較を行うには、すべての組み合わせである10回の比較が必要であるが、 試験の都合で一部しか実施できない場合もある。この時は正しい推定はできないが、 それなりの結果は出る。いま、5回の比較しかしなかった時を考える。この場合、 Aが最も好まれるという「正しい」結果は得られたが、Dが最も好まれないという「正しくない」 結果となった。
thurs2 <- thurs
thurs2[2,1] <- thurs2[4,2] <- thurs2[4,3] <- thurs2[5,1] <- thurs2[5,3] <- NA
thurs2[1,2] <- thurs2[2,4] <- thurs2[3,4] <- thurs2[1,5] <- thurs2[3,5] <- NA
thurs2
qn_thurs2 <- qnorm(thurs2)
x2 <- apply(qn_thurs2, 1, mean, na.rm=T)
sort(x2, decreasing=T)

課題3

 一対比較一部実施法を用い、ピスタチオ好みデータからピスタチオ得点を求めよ。 ただし、一対比較では、5対0のような極端なときは解が得られないので、0.5点を加え、 5.5対0.5のようにする。
Copyright (C) 2009, Hiroshi Omori. 最終更新日:2018年 6月13日