グループ化されたペアを示すテーブルでテューキーHSD事後検定の結果を取得する方法


13

Rとの双方向のAnovaの後、TukeyHSD事後検定を実行して、有意差でグループ化されたソートされたペアを含むテーブルを取得したいと思います。(言い回しについては申し訳ありませんが、私はまだ統計に新しいです。)

私はこのようなものが欲しいです:

ここに画像の説明を入力してください

だから、星や文字でグループ化。

何か案が?パッケージHSD.test()から関数をテストしましたが、agricolae双方向テーブルを処理していないようです。

回答:


22

agricolae::HSD.testこの関数は正確にすることを行いますが、あなたはそれがいることを知らせる必要がありますあなたは交互作用項に興味があります。Stataデータセットの例を次に示します。

library(foreign)
yield <- read.dta("http://www.stata-press.com/data/r12/yield.dta")
tx <- with(yield, interaction(fertilizer, irrigation))
amod <- aov(yield ~ tx, data=yield)
library(agricolae)
HSD.test(amod, "tx", group=TRUE)

これにより、以下に示す結果が得られます。

Groups, Treatments and means
a        2.1     51.17547 
ab       4.1     50.7529 
abc      3.1     47.36229 
 bcd     1.1     45.81229 
  cd     5.1     44.55313 
   de    4.0     41.81757 
    ef   2.0     38.79482 
    ef   1.0     36.91257 
     f   3.0     36.34383 
     f   5.0     35.69507 

これらは、次のコマンドで取得するものと一致します。

. webuse yield
. regress yield fertilizer##irrigation
. pwcompare fertilizer#irrigation, group mcompare(tukey)

-------------------------------------------------------
                      |                           Tukey
                      |     Margin   Std. Err.   Groups
----------------------+--------------------------------
fertilizer#irrigation |
                 1 0  |   36.91257   1.116571    AB    
                 1 1  |   45.81229   1.116571      CDE 
                 2 0  |   38.79482   1.116571    AB    
                 2 1  |   51.17547   1.116571         F
                 3 0  |   36.34383   1.116571    A     
                 3 1  |   47.36229   1.116571       DEF
                 4 0  |   41.81757   1.116571     BC   
                 4 1  |    50.7529   1.116571        EF
                 5 0  |   35.69507   1.116571    A     
                 5 1  |   44.55313   1.116571      CD  
-------------------------------------------------------
Note: Margins sharing a letter in the group label are
      not significantly different at the 5% level.

multcompのパッケージには、(「コンパクトな文字が表示」、参照シンボリック可視化を提供します:比較と評価コンパクトな文字を表示するためのアルゴリズムを、それが表形式でそれらを提示しませんが、重要なペアごとの比較の詳細については)。ただし、ボックスプロットを使用して結果を簡単に表示できるプロットメソッドがあります。プレゼンテーションの順序も変更することができ(オプションdecreasing=)、複数の比較のためのオプションがはるかに多くあります。これらの機能を拡張するmultcompViewパッケージもあります。

以下は、同じ例を分析したものglhtです。

library(multcomp)
tuk <- glht(amod, linfct = mcp(tx = "Tukey"))
summary(tuk)          # standard display
tuk.cld <- cld(tuk)   # letter-based display
opar <- par(mai=c(1,1,1.5,1))
plot(tuk.cld)
par(opar)

同じ文字を共有する治療は、選択したレベル(デフォルト、5%)で有意差はありません。

ここに画像の説明を入力してください

ちなみに、現在R-Forgeでホストされている有望な新しいプロジェクトfactorplotがあります。行と文字ベースの表示、およびすべてのペアワイズ比較のマトリックス概要(レベルプロットを使用)が含まれます。ワーキングペーパーはここにあります:factorplot:GLMでの単純なコントラストの表示の改善


この徹底的な回答をありがとうございました!数分後すぐに、これらのさまざまな方法を試します。乾杯!
ストラグ

multcompパッケージ関数を試してみましたが、「cld()」関数を使用すると「Error:sapply(split_names、length)== 2 is not all TRUE」というエラーが表示されます
ストラグ

1
@chtfn変数ラベルに問題があるようです。ソースコードをざっと見てみると、このエラーメッセージがinsert_absorb()処理のペアを抽出しようとしていることがわかります。おそらく、インタラクション用語のコーディングレベルに使用したセパレータを変更しようとすることはできますか?実用的な例がなければ、何が起こったのかを知るのは困難です。
chl

私はそれを理解しました:遺伝子型と治療の名前にポイントがあり、qlht()がポイントを使用してペアの名前を分けるので、それはおかしくなりました。ご協力ありがとうございます、chl!:)
ストラグ

3
私は今、追加することが必要であることに気づいた今日console=TRUEではHSD.test()、誰かがこれをしようとすると、何の結果を見ていない場合には、テーブルを得るために。おそらくのアップデートagricolae
ストラグ

2

TukeyHSDヘルプファイルによると、指定された家族ごとのカバレッジの確率を持つ因子のレベルの平均間の差に関する信頼区間のセットを計算するという関数があります。間隔は、スチューデント化された範囲統計、Tukeyの「正直有意差」法に基づいています。これはあなたが望むことをしますか?

http://stat.ethz.ch/R-manual/R-patched/library/stats/html/TukeyHSD.html


ご回答ありがとうございます。はい、この機能を試しましたが、比較の生のリストが表示されます。私がしたいのは、私の質問の画像のようにグループ化され、どのグループがどのグループと異なるのかを明確に表示し、最終的にグラフにグループ名を追加することです(たとえば、a、ab、abc、bc 、c)
ストラグ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.