在 R 中表示 anova 的相互作用

机器算法验证 r 方差分析 相互作用
2022-04-18 23:41:35

我在《 S 和 S-plus 的基础知识》一书中读到,“A:B”起到“A 和 B 之间的交互”的作用。
但是,在另一本书中,我读到“当一个因素嵌套在另一个因素中时,两个因素永远不会产生交互作用”。
但是 aov(y~a/b) 与 aov(y~a+a:b) 的结果相同。

所以在我看来 a:b 可能意味着交互,但也可能意味着嵌套在另一个因素中的因素的影响。换句话说,“A:B”定义为“A 和 B 之间的交互”是不完整的。
我说得对吗?如何解释这一切?

1个回答

非常小心:它意味着一堆不同的东西,具体取决于你在 R 中使用它的上下文。

见和?interaction,?formula,?lm,?':'

这是一个例子interaction

df <- data.frame(X=sample(letters[1:10],200, replace=T),Y=sample(letters[1:10],200, replace=T))
> df$X:df$Y
  [1] a:a i:i c:e g:g e:c e:h i:i j:f h:f a:j i:e c:h h:c h:a j:f i:g g:e a:c d:g f:j c:i h:g g:h g:d e:b a:a c:a
 [28] e:e c:d b:e i:h i:j g:g d:b h:d j:d a:j e:i d:g i:e e:c e:e h:h j:b f:b a:g h:g b:j h:e j:d b:f d:i j:i b:c
 [55] a:i c:b b:d g:h g:f h:i e:a h:e d:e d:f i:j a:a d:e i:b g:c d:g j:h c:g j:b i:d b:g e:c h:b e:g b:b h:g d:j
 [82] j:i i:b d:a a:h h:f j:c c:j f:j e:g h:i g:f j:a b:e j:i a:j d:c g:j a:h h:c b:a c:f b:e f:d c:d j:d i:f d:j
[109] g:b j:i c:c h:b b:a f:c c:g j:i h:b j:e c:j c:b i:e f:i c:j g:i i:e h:i b:e i:d c:i j:i h:g g:j d:j a:h d:b
[136] c:f j:b a:e f:i c:j j:h g:i b:d i:j h:i g:i g:i g:j h:d g:g g:c f:g e:b j:a b:b f:e i:i g:h c:f i:f f:c a:f
[163] h:g e:f b:b b:j b:a i:g b:i h:j f:j a:f h:j b:a f:d h:g f:f d:a d:j d:g d:g g:b d:e e:b h:b g:a h:a h:g e:j
[190] d:d d:b e:h h:j f:g a:g f:i j:b d:h a:g j:e
100 Levels: a:a a:b a:c a:d a:e a:f a:g a:h a:i a:j b:a b:b b:c b:d b:e b:f b:g b:h b:i b:j c:a c:b c:c ... j:j

本质上返回与 Y 匹配的所有唯一 X 集合

aov, or lm, or 和函数中,将 aformula作为参数。这意味着这两个变量的“相互作用”。

df <- data.frame(y=runif(100),x=rnorm(100),z=rchisq(100,20))
lm(y ~ x + z, df)
lm(y ~ x:z, df) 
lm(y ~ x*z, df) ## essentailly y~ x + z + x:z

使用数字或存储数字的对象时,它也可以是简写:

1:4 = 1,2,3,4
a <- 5
b <- 10
a:b 5,6,7,8,9,10