【R】平均値の差を比較する方法(一元配置分散分析)
一元配置分散分析とは
- 3群以上の標本の平均値を比較する時に使われる検定方法。
- 2群の標本の平均値を比較するのであれば、t検定を使える。
テストデータ
- 以下のデータは、文字列結合の速度比較で得られた、文字列結合の手法ごとの処理時間(ms)となります。
- plus:"+"による文字列結合。
- concat:String.concat()による文字列結合。
- builder:StringBuilderを用いた文字列結合。
- buffer:StringBufferを用いた文字列結合。
string_concat.csv
method,time
plus,11729
plus,11563
plus,11592
plus,11639
plus,11575
plus,11688
plus,11603
plus,11597
plus,11651
plus,11575
concat,4985
concat,4994
concat,4977
concat,5011
concat,5043
concat,4992
concat,5113
concat,5088
concat,4979
concat,4998
builder,1
builder,1
builder,1
builder,1
builder,1
builder,1
builder,1
builder,1
builder,2
builder,1
buffer,2
buffer,1
buffer,1
buffer,2
buffer,1
buffer,1
buffer,1
buffer,1
buffer,1
buffer,2
箱ひげ図の作成
- データの傾向を把握するために、分散分析に先立って箱ひげ図を作成しました。
- 解析データの都合上仕方がないのですが、箱ひげの"箱"が潰れたようにプロットされてしまいました...
Rのコンソール
> string_concat <- read.table("C:\\string_concat.csv", header=TRUE, encoding="CP932", sep=",")
> boxplot(string_concat$time ~ string_concat$method, ylab="処理時間(ms)", main="文字列結合の手法ごとの処理時間")
- 2群の標本の平均値を比較するのであれば、t検定を使える。
- 以下のデータは、文字列結合の速度比較で得られた、文字列結合の手法ごとの処理時間(ms)となります。
- plus:"+"による文字列結合。
- concat:String.concat()による文字列結合。
- builder:StringBuilderを用いた文字列結合。
- buffer:StringBufferを用いた文字列結合。
string_concat.csv
method,time
plus,11729
plus,11563
plus,11592
plus,11639
plus,11575
plus,11688
plus,11603
plus,11597
plus,11651
plus,11575
concat,4985
concat,4994
concat,4977
concat,5011
concat,5043
concat,4992
concat,5113
concat,5088
concat,4979
concat,4998
builder,1
builder,1
builder,1
builder,1
builder,1
builder,1
builder,1
builder,1
builder,2
builder,1
buffer,2
buffer,1
buffer,1
buffer,2
buffer,1
buffer,1
buffer,1
buffer,1
buffer,1
buffer,2
箱ひげ図の作成
- データの傾向を把握するために、分散分析に先立って箱ひげ図を作成しました。
- 解析データの都合上仕方がないのですが、箱ひげの"箱"が潰れたようにプロットされてしまいました...
Rのコンソール
> string_concat <- read.table("C:\\string_concat.csv", header=TRUE, encoding="CP932", sep=",")
> boxplot(string_concat$time ~ string_concat$method, ylab="処理時間(ms)", main="文字列結合の手法ごとの処理時間")
- 解析データの都合上仕方がないのですが、箱ひげの"箱"が潰れたようにプロットされてしまいました...
Rのコンソール
> string_concat <- read.table("C:\\string_concat.csv", header=TRUE, encoding="CP932", sep=",")
> boxplot(string_concat$time ~ string_concat$method, ylab="処理時間(ms)", main="文字列結合の手法ごとの処理時間")
一元配置分散分析の実行
- ここでは、等分散性を仮定しない「ウェルチの方法の拡張」を使っています。
- 等分散性を仮定する場合は、引数として"var.equal=TRUE"を指定します。
- 結果を見ると、p値(p-value)が2.2e-16(※0.01未満)となっているので、「文字列結合の手法によって処理速度が異なる」ということになります。
- 一般的に、p値が0.05もしくは0.01未満であれば、統計学的に有意差があるとされています。
Rのコンソール
> string_concat <- read.table("C:\\string_concat.csv", header=TRUE, encoding="CP932", sep=",")
> oneway.test(string_concat$time ~ string_concat$method)
One-way analysis of means (not assuming equal variances)
data: string_concat$time and string_concat$method
F = 175010, num df = 3.000, denom df = 17.442, p-value < 2.2e-16
多重比較の実行
- 一元配置分散分析は「n群のデータ全体で、平均値の比較を行う」方法ですが、多重比較を使うと「各群の平均値の比較」を行うことができます。
- 以下は、pairwise.t.test()という関数を使って、bonferroniの方法で多重比較を行っています。
- Tukeyの方法で多重比較を行う時は、TukeyHSD()という関数を使うそうです。
- 多重比較の結果(※マトリックスになっている部分)は、以下のようになりました。
- plusは、buffer/builder/concatに対しても有意差が認められた。
- concatは、buffer/builderに対して有意差が認められた。
- builderとbufferの間には有意差が認められなかった。
Rのコンソール
> pairwise.t.test(string_concat$time, string_concat$method, p.adj="bonf")
Pairwise comparisons using t tests with pooled SD
data: string_concat$time and string_concat$method
buffer builder concat
builder 1 - -
concat <2e-16 <2e-16 -
plus <2e-16 <2e-16 <2e-16
P value adjustment method: bonferroni
関連URL
- 等分散性を仮定する場合は、引数として"var.equal=TRUE"を指定します。
- 一般的に、p値が0.05もしくは0.01未満であれば、統計学的に有意差があるとされています。
Rのコンソール
> string_concat <- read.table("C:\\string_concat.csv", header=TRUE, encoding="CP932", sep=",")
> oneway.test(string_concat$time ~ string_concat$method)
One-way analysis of means (not assuming equal variances)
data: string_concat$time and string_concat$method
F = 175010, num df = 3.000, denom df = 17.442, p-value < 2.2e-16
- 一元配置分散分析は「n群のデータ全体で、平均値の比較を行う」方法ですが、多重比較を使うと「各群の平均値の比較」を行うことができます。
- 以下は、pairwise.t.test()という関数を使って、bonferroniの方法で多重比較を行っています。
- Tukeyの方法で多重比較を行う時は、TukeyHSD()という関数を使うそうです。
- 多重比較の結果(※マトリックスになっている部分)は、以下のようになりました。
- plusは、buffer/builder/concatに対しても有意差が認められた。
- concatは、buffer/builderに対して有意差が認められた。
- builderとbufferの間には有意差が認められなかった。
Rのコンソール
> pairwise.t.test(string_concat$time, string_concat$method, p.adj="bonf")
Pairwise comparisons using t tests with pooled SD
data: string_concat$time and string_concat$method
buffer builder concat
builder 1 - -
concat <2e-16 <2e-16 -
plus <2e-16 <2e-16 <2e-16
P value adjustment method: bonferroni
関連URL
Author And Source
この問題について(【R】平均値の差を比較する方法(一元配置分散分析)), 我々は、より多くの情報をここで見つけました https://qiita.com/nkojima/items/690906dd0beb2d4e32e5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .