【问题标题】:Trend analysis for ANOVA with both btw-Ss and within-Ss factors具有 btw-Ss 和内 Ss 因素的 ANOVA 趋势分析
【发布时间】:2014-08-25 01:05:40
【问题描述】:

我想对同时具有 btw-Ss 和 inside-Ss 因素的 ANOVA 进行趋势分析。

顺便说一句,“治疗” 内部因素是“试验”。

test.data <- data.frame(sid = rep(c("s1", "s2", "s3", "s4", "s5"), each = 4),
                    treatments = rep(c("a1", "a2"), each = 20),
                    trials = rep(c("b1", "b2", "b3", "b4"), 10),
                    responses = c(3,5,9,6,7,11,12,11,9,13,14,12,4,8,11,7,1,3,5,4,5,6,11,7,10,12,18,15,10,15,15,14,6,9,13,9,3,5,9,7))}

方差分析与教科书(Keppel,1973)中的完全匹配:

aov.model.1 <- aov(responses ~ treatments*trials + Error(sid/trials), data=tab20.09)       

我遇到的问题是趋势分析。我想看看“试验”的线性、二次和三次趋势。也很高兴看到“治疗 x 试验”的这些相同趋势。

我已将趋势分析的对比设置为:

contrasts(tab20.09$trials) <- cbind(c(-3, -1, 1, 3), c(1, -1, -1, 1), c(-1, 3, -3, 1))    

contrasts(tab20.09$trials)
   [,1] [,2] [,3]
b1   -3    1   -1
b2   -1   -1    3
b3    1   -1   -3
b4    3    1    1

用于线性、二次和三次趋势。

根据吉宝的说法,趋势的结果应该是:

TRIALS:   
              SS          df     MS          F  
(Trials)   (175.70)        3  
Linear       87.12         1    87.12     193.60  
Quadratic    72.90         1    72.90     125.69  
Cubic        15.68         1    15.68       9.50  

TREATMENTS X TRIALS  
               SS         df      MS         F  
(Trtmt x Trials)  
             (3.40)        3  
Linear        0.98         1      0.98       2.18  
Quadratic     0.00         1      0.00        <1  
Cubic         2.42         1      2.42       1.47  

ERROR TERMS  
            (21.40)       (24)  
Linear        3.60          8    0.45   
Quadratic     4.60          8    0.58  
Cubic        13.20          8    1.65   

我相信他的答案,因为曾经我必须自己使用 6 功能计算器加上纸和铅笔来得出答案。但是,当我这样做时:

contrasts(tab20.09$trials) <- cbind(c(-3, -1, 1, 3), c(1, -1, -1, 1), c(-1, 3, -3, 1))    
aov.model.2 <- aov(responses ~ treatments*trials + Error(sid/trials), data=tab20.09)    
summary(lm(aov.model.2))    

我得到的似乎没有意义。

summary(lm(aov.model.2))  
Call:
lm(formula = aov.model.2)
Residuals:
ALL 40 residuals are 0: no residual degrees of freedom!

Coefficients: (4 not defined because of singularities)
                       Estimate Std. Error t value Pr(>|t|)
(Intercept)           5.750e+00         NA      NA       NA
treatmentsa2          3.500e+00         NA      NA       NA
trials1               6.500e-01         NA      NA       NA
trials2              -1.250e+00         NA      NA       NA
trials3              -4.500e-01         NA      NA       NA
sids10               -3.250e+00         NA      NA       NA
sids2                 4.500e+00         NA      NA       NA
sids3                 6.250e+00         NA      NA       NA
sids4                 1.750e+00         NA      NA       NA
sids5                -2.500e+00         NA      NA       NA
sids6                -2.000e+00         NA      NA       NA
sids7                 4.500e+00         NA      NA       NA
sids8                 4.250e+00         NA      NA       NA
 sids9                        NA         NA      NA       NA
treatmentsa2:trials1  2.120e-16         NA      NA       NA
treatmentsa2:trials2 -5.000e-01         NA      NA       NA
treatmentsa2:trials3  5.217e-16         NA      NA       NA
trials1:sids10        1.500e-01         NA      NA       NA
trials2:sids10        7.500e-01         NA      NA       NA
trials3:sids10        5.000e-02         NA      NA       NA
trials1:sids2        -1.041e-16         NA      NA       NA
trials2:sids2        -2.638e-16         NA      NA       NA
trials3:sids2         5.000e-01         NA      NA       NA
trials1:sids3        -1.500e-01         NA      NA       NA
trials2:sids3        -2.500e-01         NA      NA       NA
trials3:sids3         4.500e-01         NA      NA       NA
trials1:sids4        -5.000e-02         NA      NA       NA
trials2:sids4        -7.500e-01         NA      NA       NA
trials3:sids4         1.500e-01         NA      NA       NA
trials1:sids5        -1.000e-01         NA      NA       NA
trials2:sids5         5.000e-01         NA      NA       NA
trials3:sids5         3.000e-01         NA      NA       NA
trials1:sids6        -1.000e-01         NA      NA       NA
trials2:sids6         5.000e-01         NA      NA       NA
trials3:sids6        -2.000e-01         NA      NA       NA
trials1:sids7         4.000e-01         NA      NA       NA
trials2:sids7         5.000e-01         NA      NA       NA
trials3:sids7        -2.000e-01         NA      NA       NA
trials1:sids8        -5.000e-02         NA      NA       NA
trials2:sids8         2.500e-01         NA      NA       NA
trials3:sids8         6.500e-01         NA      NA       NA
trials1:sids9                NA         NA      NA       NA
trials2:sids9                NA         NA      NA       NA
trials3:sids9                NA         NA      NA       NA

Residual standard error: NaN on 0 degrees of freedom
Multiple R-squared:      1, Adjusted R-squared:    NaN 
F-statistic:   NaN on 39 and 0 DF,  p-value: NA

任何想法我做错了什么?我怀疑“lm”和 ANOVA 存在问题,但我不知道是什么,也不知道如何进行趋势分析。

###### MORE DETAILS 响应 ssdecontrol 的响应

嗯,“试验”是一个因素,因为它编码了四个被操纵的经验层次。同样,“sid”是“主题标识号”,绝对是“名义”而不是“序数”或“间隔”。在 ANOVAS 中,主题几乎总是被视为因素。

但是,我确实尝试了这两种更改,但它极大地扭曲了方差分析(您自己尝试并比较)。同样,它似乎没有帮助。也许更直接相关,当我尝试创建和应用我的对比时,我被告知无法完成,因为我的数字需要成为因素:

contrasts(tab20.09$trials) <- cbind(c(-3, -1, 1, 3), c(1, -1, -1, 1), c(-1, 3, -3, 1))    
Error in `contrasts<-`(`*tmp*`, value = c(-3, -1, 1, 3, 1, -1, -1, 1, :    
contrasts apply only to factors    

重新开始 我似乎在使用 contr.poly 方面取得了更大的进步

contrasts(tab20.09$trials) <- contr.poly(levels(tab20.09$trials))

方差分析根本没有改变。所以这很好,当我这样做时:

lm.model <- lm(responses ~ trials, data = tab20.09)    
summary.lm(lm.model)    

我得到的模式与吉宝基本相同。

但是,由于我对交互的线性趋势(治疗 x 试验)感兴趣,而不仅仅是试验,所以我尝试了这个:

lm3 <- lm(responses ~  treatments*trials, data = tab20.09)
summary.lm(lm3)

“试炼”的 ME 消失了。 . .

在 Keppel 的治疗中,他计算了每种对比的单独误差项(即线性、二次和三次),并将其用于“试验”的主效应以及“治疗 x 试验”的交互作用。

我当然可以再次手动计算所有这些东西。也许我什至可以为一般情况编写 R 函数;但是,似乎很难相信实验心理学的这种基本核心对比还没有找到 R 实现!??

任何帮助或建议将不胜感激。谢谢。 W

【问题讨论】:

  • 如果没有最小的工作示例,将很难诊断任何事情,而且您得到的输出似乎没有意义。 R 是开源的,所以lmaov 中总是有可能存在错误,但更有可能它们只是以你不期望的方式行事(或者你以某种方式滥用它们)。
  • 嗨——请再看一遍。你在输入的过程中抓住了我,而不是编辑。 (这是我不擅长stackOverflow界面的问题。我很抱歉。)

标签: r anova contrast


【解决方案1】:

看起来trialssids 是因子,但您打算将它们设为数字/整数。运行sapply(tab20.09, class) 看看是不是这样。这就是输出的意思;它不是拟合连续/计数交互,而是为每个变量的每个级别拟合一个虚拟变量并计算它们之间的所有交互。

要修复它,只需在列表语法中重新分配tab20.09$trials &lt;- as.numeric(tab20.09$trials)tab20.09$sids &lt;- as.numeric(tab20.09$sids),或者您可以使用tab20.09[, c("trials", "sids")] &lt;- apply(tab20.09[, c("trials", "sids")], 2, as.numeric) 之类的矩阵语法。在这种情况下,第一个更容易,但您也应该注意第二个。

【讨论】:

    猜你喜欢
    • 2018-03-27
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-11
    相关资源
    最近更新 更多