4

問題: R のテューキー検定で平均を計算するサンプルの順序を変更し、対応する文字を割り当てる方法を知りたいです。非常に簡単な例を以下に示します。

アイリスのデータをいじってみたところ、異なる種の間で Sepal.Length に違いがあることがわかりました。ボックスプロットは次のとおりです。

ここに画像の説明を入力

ANOVA 検定を実施したところ、差が統計的に有意であることがわかりました。

> fit <- lm(Sepal.Length ~ Species, data = iris)
> summary(aov(fit))

             Df Sum Sq Mean Sq F value Pr(>F)    
Species       2  63.21  31.606   119.3 <2e-16 ***
Residuals   147  38.96   0.265                   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

次に、テューキーのテストを実施し、次の結果を得ました。

> library(agricolae)
> HSD.test(fit, "Species", group=T, console=T)

Study: fit ~ "Species"

HSD Test for Sepal.Length 

Mean Square Error:  0.2650082 

Species,  means

           Sepal.Length       std  r Min Max
setosa            5.006 0.3524897 50 4.3 5.8
versicolor        5.936 0.5161711 50 4.9 7.0
virginica         6.588 0.6358796 50 4.9 7.9

alpha: 0.05 ; Df Error: 147 
Critical Value of Studentized Range: 3.348424 

Honestly Significant Difference: 0.2437727 

Means with the same letter are not significantly different.

Groups, Treatments and means
a    virginica       6.588 
b    versicolor      5.936 
c    setosa          5.006

グループの表に従って、HSD.test 関数は意味を降順にソートし、文字を割り当てます。したがって、"virginica" の平均値が最大であるため、表の最初になります。

質問: 文字のデフォルトの並べ替えと割り当てを変更する方法はありますか? サンプルを平均値の昇順に並べ替えて、文字を割り当てることはできますか? 予想される出力は次のとおりです。

a setosa     5.006
b versicolor 5.936
c virginica  6.588

考えられる解決策: パッケージmultcompには、連携して機能する 2 つの関数があります。

1 -glhtテューキーの検定を行う

> an <- aov(fit)
> library(multcomp)
> glht(an, linfct = mcp(Species = "Tukey"))

         General Linear Hypotheses

    Multiple Comparisons of Means: Tukey Contrasts


    Linear Hypotheses:
                                Estimate
    versicolor - setosa == 0       0.930
    virginica - setosa == 0        1.582
    virginica - versicolor == 0    0.652

2 -要因のレベルに応じcldて割り当てられた文字を提供できますSpeciesiris$Species

> cld(glht(an, linfct = mcp(Species = "Tukey")))
    setosa versicolor  virginica 
       "a"        "b"        "c" 

残念ながら、glht関数は、棒グラフの作成に役立ち、必要となる可能性のある別のデータを表示しません (平均値、標準偏差、p 値)。もちろん、別の特殊関数とは別に行うことも、 と の両方HSD.testを使用することもできますcldHSD.testしかし、関数内の手段のソートに関する問題を解決し、これだけを使用することを好みます。

4

3 に答える 3

-1

まず、関数をありがとう。それは私が探していたものでした。しかし、私は間違いがあると思います

res <- vector(mode = "character", length=length(trt)), 

そのはず

res <- vector(mode = "character", length=length("trt")) 
于 2015-12-10T12:11:12.813 に答える