1

使用下面的数据框,我设法计算了受试者反应时间的重复测量方差分析。这是有问题的数据框:

> str(a)
'data.frame':   2778 obs. of  9 variables:
 $ Phase    : Factor w/ 1 level "Test": 1 1 1 1 1 1 1 1 1 1 ...
 $ Subject  : Factor w/ 17 levels "1","2","3","5",..: 7 7 7 7 7 7 7 7 7 7 ...
 $ Group    : Factor w/ 2 levels "Attn","Dist": 1 1 1 1 1 1 1 1 1 1 ...
 $ Global   : Factor w/ 2 levels "D","S": 1 1 1 1 1 1 1 1 1 1 ...
 $ Local    : Factor w/ 2 levels "D","S": 1 1 1 1 1 1 1 1 1 1 ...
 $ trialtype: Factor w/ 1 level "Dist": 1 1 1 1 1 1 1 1 1 1 ...
 $ RT       : num  477 682 720 NaN 604 720 910 707 705 758 ...
 $ ACC      : logi  TRUE TRUE TRUE FALSE TRUE TRUE ...

这是我用来计算反应时间方差分析的代码:

raw<-read.table('R_notarg_noattn.tdf',header=T)
head(raw)
str(raw)
raw$Subject = factor(raw$Subject)

raw$logrt = log10(raw$RT)  # logorithm of RT
hist(raw$logrt)

tsttrl_nooutliers = subset(raw, logrt>2 & ACC==TRUE)  # take values greater than 2 logs AND where subj responded correctly
attach(tsttrl_nooutliers)  # make column names available as global variables
hist(logrt)
summary(aovrt <- aov(logrt ~ Group*Global*Local + Error(Subject/(Global*Local)), subset=Phase=='Test', data=tsttrl_nooutliers))  # ANOVA table

meanrt=10^tapply(logrt,list( Global=Global, Local=Local, Group=Group), mean)  # de-log and calculate means by condition

par(mfcol=c(1,2))  # c() *combines* values into vector/list; par() sets graphical parameters... equivalent to Matlab's set() ????
barplot(meanrt[,,'Attn'],beside=T,ylim=c(700,1000),xpd=F)
barplot(meanrt[,,'Dist'],beside=T,ylim=c(700,1000),xpd=F)

detach(tsttrl_nooutliers)

我想对错误率重复类似的分析,这些错误率编码在 boolean columnACC中。我想知道我应该怎么做,因为这个计算需要一个中间步骤,即按每个条件按主题计算错误率。当我说“条件”时,我的意思是说因素的独特组合,即 $Group、$Global、$Local、$trialtype(仅选择 $Phase == Test 的试验,如前面的片段)。

有人能指出我正确的方向吗?简而言之,我不清楚如何获得错误率,然后将其输入aov函数应该没有问题。

4

2 回答 2

1

我不同意使用 aov() 不会带来任何问题,因为您将从分析连续的结果转向离散的结果(乘以观察到的二项式)。撇开这通常需要泊松回归或逻辑回归这一事实不谈,可以在 $Subject、$Group、$Global、$Local 和 $trialtype 的类别中聚合“ACC”的总和/长度。目前,$trialtype 和 $Phase 只有一个级别,因此似乎不需要子集,但如果此 str() 输出位于子集上,则您可以将其限制为 $trialtype=="Test" 仅使用a[a$trialtyp=="Test" , ]作为您的数据框。

categ.a <- with( a, tapply(a$ACC, INDEX =list(Subject Group, Global, Local), 
                     FUN = function(x) {
                                   sum(x)/ length(x) }

编辑 1:您可能想在 www.stackexchange.com 上寻求有关如何处理本研究设计以获得离散结果的统计咨询。如果您正确设置了 glm() 或 lmer() 分析,您甚至可能不需要此步骤。我一直在想,我可能会尝试将 $Subject 作为混合模型中的一个级别,其中 ACC==TRUE 作为泊松错误的结果,使用 log(length(ACC)) 的偏移量。

编辑2:如果您在每个主题和类别中有足够的数字,错误率是“伪连续的”,即大部分不是零,那么原始方法可能就足够了。

于 2012-06-26T12:37:00.083 回答
0

您没有正确进行 RT 分析,因此很难了解如何进行错误分析。您不允许对原始值进行 ANOVA,您需要先汇总到条件。排除异常值后(这些异常值的理由是什么?)然后您需要聚合 rt.

agg <- aggregate( RT ~ Group + Global + Local + Subject, data = tsttrl_nooutliers, mean )

然后就可以进行建模了。我不想告诉你如何做准确度,尽管你现在应该能够弄清楚。你需要阅读Dixon (2008)Jaeger (2008)。不建议对精度进行方差分析,它们很好地涵盖了大部分原因。

于 2012-06-26T12:58:08.007 回答