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 ...

そして、これが反応時間のANOVAを計算するために使用したコードです。

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)

ブール列にコード化されているエラー率についても、同様の分析を繰り返したいと思いますACC。この計算では、条件ごとにサブジェクトごとにエラー率を計算する中間ステップが必要になるため、これをどのように行うべきか疑問に思いました。「条件」とは、$ Group、$ Global、$ Local、$trialtypeなどの要素の一意の組み合わせを意味します(前のスニペットのように、$ Phase == Testの試行のみを選択します)。

誰かが私を正しい方向に向けることができますか?要するに、エラー率を取得する方法がわからないので、関数に問題なくフィードできるはずaovです。

4

2 に答える 2

1

aov()を使用しても問題が発生しないことに同意しません。これは、連続的な結果の分析から離散的な結果(複数観測された二項)に移行するためです。これには通常ポアソン回帰またはロジスティック回帰が必要であるという事実は別として、$ Subject、$ Group、$ Global、$ Local、および$trialtypeのカテゴリ内で「ACC」の合計/長さを集計することができます。現時点では、$trialtypeと$Phaseのレベルは1つしかないため、サブセット化は不要に見えますが、この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()分析を適切に設定すれば、このステップは必要ないかもしれません。log(length(ACC))のオフセットを使用したポアソンエラーの結果としてACC == TRUEを持つ混合モデルのレベルとして、$Subjectを試すことができると考えていました。

編集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 )を読む必要があります。精度のANOVAは推奨されておらず、理由の大部分をカバーする素晴らしい仕事をしています。

于 2012-06-26T12:58:08.007 に答える