6

R で ANOVA と事後検定を使用する方法を理解しようとしています。これまでのところ、aov() と TukeyHSD() を使用してデータを分析しました。例:

uni2.anova <- aov(Sum_Uni ~ Micro, data= uni2)

uni2.anova

Call:
aov(formula = Sum_Uni ~ Micro, data = uni2)

Terms:
                    Micro  Residuals
Sum of Squares  0.04917262 0.00602925
Deg. of Freedom         15         48

Residual standard error: 0.01120756 
Estimated effects may be unbalanced

私の問題は、ペアごとの比較の膨大なリストを持っているが、それを使って何もできないことです:

 TukeyHSD(uni2.anova)
 Tukey multiple comparisons of means
   95% family-wise confidence level

Fit: aov(formula = Sum_Uni ~ Micro, data = uni2)

$Micro
                               diff          lwr           upr     p adj
Act_Glu2-Act_Ala2     -0.0180017863 -0.046632157  0.0106285840 0.6448524
Ana_Ala2-Act_Ala2     -0.0250134285 -0.053643799  0.0036169417 0.1493629
NegI_Ala2-Act_Ala2     0.0702274527  0.041597082  0.0988578230 0.0000000

このデータセットには 40 行あります...理想的には、次のようなデータセットを取得したいと考えています。

  • Act_Glu2 : a
  • Act_Ala2 : a
  • NegI_Ala2: バ...

要点を理解していただければ幸いです。これまでのところ、オンラインで匹敵するものは何も見つかりませんでした... TukeyHSD から生成されたファイルで重要なペアのみを選択しようとしましたが、ファイルは行と列で構成されていることを「認識」せず、選択が不可能です.. .

たぶん、私のアプローチに根本的な問題がありますか?

4

3 に答える 3

7

OPは、文字が比較のビューを取得することを望んでいると思います.

library(multcompView)
multcompLetters(extract_p(TukeyHSD(uni2.anova)))

そうすれば手紙が届きます。

multcomp パッケージを使用することもできます

library(multcomp)
cld(glht(uni2.anova, linct = mcp(Micro = "Tukey")))

これがあなたが必要とするものであることを願っています。

于 2011-11-02T17:17:44.693 に答える
2

TukeyHSD からの結果はリストです。str構造を見るのに使います。あなたの場合、それは 1 つの項目のリストであり、その項目は基本的にマトリックスであることがわかります。したがって、最初の列を抽出するには、TukeyHSD の結果を保存する必要があります

hsd <- TukeyHSD(uni2.anova)

str(hsd)あなたができることを見ると、ビットを得ることができます...

hsd$Micro[,1]

これにより、相違点の列が表示されます。今欲しいものを抽出できるはずです。

于 2011-11-02T15:51:20.553 に答える
1

例のデータがないとわかりにくいMicroですが、4 レベルの因子に過ぎないと仮定すると、uni2次のようになります。

n = 40
Micro = c('Act_Glu2', 'Act_Ala2', 'Ana_Ala2', 'NegI_Ala2')[sample(4, 40, rep=T)]
Sum_Uni = rnorm(n, 5, 0.5)
Sum_Uni[Micro=='Act_Glu2'] = Sum_Uni[Micro=='Act_Glu2'] + 0.5

uni2 = data.frame(Sum_Uni, Micro)
> uni2
   Sum_Uni     Micro
1 4.964061  Ana_Ala2
2 4.807680  Ana_Ala2
3 4.643279 NegI_Ala2
4 4.793383  Act_Ala2
5 5.307951 NegI_Ala2
6 5.171687  Act_Glu2
...

次に、実際に取得しようとしているのは、基本的な重回帰の出力だと思います。

fit = lm(Sum_Uni ~ Micro, data = uni2)

summary(fit)
anova(fit)
> summary(fit)

Call:
lm(formula = Sum_Uni ~ Micro, data = uni2)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.26301 -0.35337 -0.04991  0.29544  1.07887 

Coefficients:
               Estimate Std. Error t value Pr(>|t|)    
(Intercept)      4.8364     0.1659  29.157  < 2e-16 ***
MicroAct_Glu2    0.9542     0.2623   3.638 0.000854 ***
MicroAna_Ala2    0.1844     0.2194   0.841 0.406143    
MicroNegI_Ala2   0.1937     0.2158   0.898 0.375239    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.4976 on 36 degrees of freedom
Multiple R-squared: 0.2891, Adjusted R-squared: 0.2299 
F-statistic:  4.88 on 3 and 36 DF,  p-value: 0.005996 

> anova(fit)
Analysis of Variance Table

Response: Sum_Uni
          Df Sum Sq Mean Sq F value   Pr(>F)   
Micro      3 3.6254 1.20847  4.8801 0.005996 **
Residuals 36 8.9148 0.24763                    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

たとえば、次のように、これらのテーブルのいずれかの数値にアクセスできます。

> summary(fit)$coef[2,4]
[1] 0.0008536287

各オブジェクトに保存されているもののリストを表示するには、次を使用しますnames()

> names(summary(fit))
 [1] "call"          "terms"         "residuals"     "coefficients" 
 [5] "aliased"       "sigma"         "df"            "r.squared"    
 [9] "adj.r.squared" "fstatistic"    "cov.unscaled" 

TukeyHSD()見つけた関数に加えて、ペアワイズ検定をさらに調べ、必要に応じて p 値を修正するための他の多くのオプションがあります。これらにはpairwise.table()、 、estimable()in gmodelsresamplingおよびbootパッケージなどが含まれます...

于 2011-11-02T15:53:24.017 に答える