分散分析とノンパラメトリック検定

分散分析

ある同一の部品を製作している3つの班があります。各班の製作効率に差があるかどうかを検証するために、各班が1個の部品を製作するための時間を複数回測定した結果が

anova.csv

に保存されています。

> time <- read.csv("anova.csv")

> time

時間 班

1 8.82 1

2 9.26 1

3 8.70 1

4 8.97 1

5 8.64 1

6 8.29 1

7 9.45 1

8 9.42 1

9 9.25 1

10 8.21 2

11 6.65 2

「時間」の列は製作するためにかかった時間を、「班」の列はどの班が作ったかを表しています。

それでは、分散分析を行います。分散分析にはoneway.testという関数を利用します。

> oneway.test(time$時間 ~ time$班,var.equal=T)

One-way analysis of means

data: time$時間 and time$班

F = 8.0335, num df = 2, denom df = 23, p-value = 0.002260

p-valueが0.00226<0.05なので、5%の有意水準で帰無仮説を棄却します。つまり、1つの部品を製作する平均時間は3班で差があるということになります。

Wilcoxonの順位和検定

以下のようなアンケートを実施しました。

問1 あなたの国籍は何ですか (日本 ・ アメリカ)

問2 あなたは親に反抗しますか?

1. よくする 2.時々する 3.あまりしない 4.ほとんどしない

このアンケートの結果が

wilcoxon1.csv

に保存されています。

> question1 <- read.csv("wilcoxon1.csv")

> question1

国籍 回答

1 日本 1

2 日本 4

3 日本 2

4 日本 4

5 日本 1

6 日本 4

7 日本 2

8 日本 4

9 日本 3

10 日本 4

11 アメリカ 3

12 アメリカ 1

この結果から、日米で反抗的態度に差があるかどうかをWilcoxonの順位和検定を使って検証しましょう。まず、subsetを使って、日本人とアメリカ人の回答を別々に抽出します。

> q1jp <- subset(question1,国籍 == "日本")

> q1us <- subset(question1,国籍 == "アメリカ")

準備が出来たので、検定を行います。wilcox.testという関数を利用します。

> wilcox.test(x=q1jp$回答,y=q1us$回答,alternative="two.sided")

Wilcoxon rank sum test with continuity correction

data: q1jp$回答 and q1us$回答

W = 78.5, p-value = 0.02698

alternative hypothesis: true mu is not equal to 0

Warning message:

Cannot compute exact p-value with ties in: wilcox.test.default(x = q1jp$回答, y = q1us$回答, alternative = "two.sided")

基本的にオプションの設定の仕方はt.testと同じです。たとえば、片側検定を行いたい場合は、alternative="two.sided"の代わりに、alternative="greater"または、alternative="less"を使います。

p-valueを見ると、0.026<0.05なので、5%の有意水準で帰無仮説が棄却されます。つまり、日米で反抗的態度(の中央値)に差があるということが分かります。

 

符号検定

ある病院の入院患者を対象に以下のようなアンケートを入院直後と退院直前の2回実施しました。

看護師はあなたの相談を良く聞いてくれましたか?

1. 非常に良く聞いてくれた 2. 良く聞いてくれた 3. 普通

4. あまり聞いてくれなかった 5. ほとんど聞いてくれなかった

このアンケートの結果が

signed.csv

に保存されています。

> q2 <- read.csv("signed.csv")

> q2

回答者番号 入院直後 退院直前

1 1 2 2

2 2 3 2

3 3 3 3

4 4 4 4

5 5 2 2

6 6 1 1

7 7 2 2

8 8 3 2

9 9 4 3

10 10 3 3

符号検定は以下のコマンドを入力することで実行できます。

> x <- q2$入院直後

> y <- q2$退院直前

> binom.test(c(length(x[x>y]),length(x[x<y])),alternative="greater")

Exact binomial test

data: c(length(x[x > y]), length(x[x < y]))

number of successes = 5, number of trials = 7, p-value = 0.2266

alternative hypothesis: true probability of success is greater than 0.5

95 percent confidence interval:

0.3412614 1.0000000

sample estimates:

probability of success

0.7142857

p-valueは0.22(>0.05)より、5%の有意水準で帰無仮説を棄却しません。つまり、入院直後と退院直前で看護に対する印象に差がないと判断されます。「alternative="greater"」は「xがyより大きい」(この場合は入院直後の方が退院直前より大きい)という対立仮説で検定することを意味します。もし、「xよりyが大きい」という対立仮説で検定したい場合、「alternative="less"」とします。

 

Kruskal-Wallis検定

以下のようなアンケートを実施しました。

問1 あなたの国籍は何ですか (日本 ・ 中国 ・ アメリカ)

問2 あなたは親に反抗しますか?

1. よくする 2.時々する 3.あまりしない 4.ほとんどしない

このアンケートの結果が

wilcoxon3.csv

に保存されています。

> question3 <- read.csv("wilcoxon3.csv")

検定を行うにはkruskal.testという関数を利用します。

> kruskal.test(question3$回答,question3$国籍)

Kruskal-Wallis rank sum test

data: question3$回答 and question3$国籍

Kruskal-Wallis chi-squared = 9.8041, df = 2, p-value = 0.007431

この結果から、5%の有意水準で帰無仮説を棄却します。つまり、各国で親に対する反抗的態度に差が見られると判断されます。

トラックバック(0)

このブログ記事を参照しているブログ一覧: 分散分析とノンパラメトリック検定

このブログ記事に対するトラックバックURL: http://www.moriyasu.org/cgi/mt/mt-tb.cgi/162

プロフィール

講義

About This Post

This page contains a single entry by moriyasu posted on 2008年7月 8日 18:03.

平均の差の検定 was the previous post in this blog.

例題6-1 is the next post in this blog.

Find recent content on the main index or look in the archives to find all content.

Powered by Movable Type 4.0