3

2 因子 ANOVA のコンテキスト内で、1 つの因子 (10、20、30 度) のコントラスト レベルを別の因子 (SpeciesA、SpeciesB) のレベル内に入力したいと考えています。これは、交互作用の効果が重要であることを前提としているため、対比は温度の主効果に対して単純に行うことはできません。

EZanova、multcomp、phia 内でこれを実行しようとしましたが、機能する構文を見つけることができませんでした。これを可能にするパッケージを見逃したことがありますか?

コントラストと係数

コントラスト 1: 10 度は、種 A の 20 度および 30 度と異なりますか? Species:Temp (2,-1,-1,0,0,0) Contrast2: 10 度は、種 B の 20 および 30 度と異なりますか? Species:Temp (0,0,0,2,-1,-1) Contrast3: Species A の 10 度は、Species B の 20 度および 30 度と異なりますか? 種:温度 (2,0,0,0,-1,-1)

species<-rep(c("speciesA","speciesB"),each=12)
temp<-rep(rep(c("10","20","30"),each=4),2)
y<-rnorm(24,5,3)
(result<-anova(lm(y~species*temp)))
4

1 に答える 1

1

base-R の一部です。ページを参照して?contrastsください。最初に要求されたコントラストについて説明します。他の 2 つは非常に簡単です。これらのコントラストの p 値を個別に計算する必要があると想定しているため、このhow.many引数を使用してコントラストの構築を 1 回の比較に制限しています。そうしないと、デフォルトでcontrasts関数が直交コントラストのスパニング セットを構築しようとするため、 5 つのコントラストが得られます。

set.seed(123)
species <- rep(c("speciesA","speciesB"),each=12)
temp <- rep(rep(c("10","20","30"),each=4),2)
y<-rnorm(24,5,3)

intvar <- interaction(species, temp)  # create an interaction variable
?contrasts

コントラスト値を適切に並べ替えるには、どのレベルがどのレベルであるかを知る必要があります。

> levels(intvar)
[1] "speciesA.10" "speciesB.10" "speciesA.20" "speciesB.20" "speciesA.30"
[6] "speciesB.30"

したがって、これは、A 種間で 10 対 20 または 30 角度の対比を構築する必要があります。

 contrasts(intvar, how.many=1) <- c(2,0,-1,0,-1,0)
 anova(lm(y~intvar) )
#------------
Analysis of Variance Table

Response: y
          Df  Sum Sq Mean Sq F value Pr(>F)
intvar     1   0.013  0.0129  0.0015 0.9695
Residuals 22 190.306  8.6503      

data=あなたは R を学習するかなり初期の段階にあるようです。そのため、ワークスペースで「ゆるい」オブジェクトに取り組むのではなく、回帰関数の引数として渡すデータフレームを構築する方法を学ぶことをお勧めします。拾わないでください。を使用する厄介な習慣attach

于 2015-09-12T18:06:45.430 に答える