2013-07-16 3 views
1

Я новичок в R, и я читал эти форумы (для помощи с R) некоторое время, но это моя первая публикация. После ошибки в каждой ошибке здесь я все еще не могу понять и исправить свои ошибки.Односторонние повторные измерения ANOVA с неуравновешенными данными

Я пытаюсь запустить односторонние повторные измерения ANOVA с неравными размерами выборки. Вот игровая версия моих данных и код, который я использую. (. Если это имеет значение, мои реальные данные имеют 12 бункеров с до 14 до 20 значений в каждом бине)

## the data: average probability for a subject, given reaction time bin 
bin1=c(0.37,0.00,0.00,0.16,0.00,0.00,0.08,0.06) 
bin2=c(0.33,0.21,0.000,1.00,0.00,0.00,0.00,0.00,0.09,0.10,0.04) 
bin3=c(0.07,0.41,0.07,0.00,0.10,0.00,0.30,0.25,0.08,0.15,0.32,0.18) 

## creating the data frame 

# dependent variable column 
probability=c(bin1,bin2,bin3) 

# condition column 
bin=c(rep("bin1",8),rep("bin2",11),rep("bin3",12)) 

# subject column (in the order that will match them up with their respective 
# values in the dependent variable column) 
subject=c("S2","S3","S5","S7","S8","S9","S11","S12","S1","S2","S3","S4","S7", 
    "S9","S10","S11","S12","S13","S14","S1","S2","S3","S5","S7","S8","S9","S10", 
    "S11","S12","S13","S14") 

# putting together the data frame 
dataFrame=data.frame(cbind(probability,bin,subject)) 

## one-way repeated measures anova 
test=aov(probability~bin+Error(subject/bin),data=dataFrame) 

Эти ошибки я получаю:

Error in qr.qty(qr.e, resp) : 
    invalid to change the storage mode of a factor 
In addition: Warning messages: 
1: In model.response(mf, "numeric") : 
    using type = "numeric" with a factor response will be ignored 
2: In Ops.factor(y, z$residuals) : - not meaningful for factors 
3: In aov(probability ~ bin + Error(subject/bin), data = dataFrame) : 
    Error() model is singular 

Извините за сложности (при условии, это сложно, это для меня). Спасибо за ваше время.

+0

При повторных измерениях ANOVA каждый объект должен отображаться ровно один раз в каждом состоянии, поэтому вы не можете * иметь неравные размеры выборки. Вам нужно отбросить предметы, которые не попадают в каждую корзину. Или, учитывая то, на что похоже, что ваши данные могут быть, добавьте 0 вероятных бункеров. Вам также необходимо установить типы переменных, как указано вашими ошибками. ... для стартеров – John

+0

Спасибо за совет. Согласно этому [link] (http://stackoverflow.com/questions/8320603/how-to-do-one-way-anova-in-r-with-unequal-sample-sizes), я думал, что неравные размеры выборки были штраф за этот анализ. Кроме того, для типов я попытался убедиться, что столбец зависимой переменной был числовым с as.numeric (и я пробовал разные вещи), но ни один из них не работал. Какими должны быть типы? –

ответ

3

Для неуравновешенной конструкции повторных измерений, это может быть простым в использовании lme (от nlme пакета):

## this should be the same as the data you constructed above, just 
## a slightly more compact way to do it. 
datList <- list(
    bin1=c(0.37,0.00,0.00,0.16,0.00,0.00,0.08,0.06), 
    bin2=c(0.33,0.21,0.000,1.00,0.00,0.00,0.00,0.00,0.09,0.10,0.04), 
    bin3=c(0.07,0.41,0.07,0.00,0.10,0.00,0.30,0.25,0.08,0.15,0.32,0.18)) 
subject=c("S2","S3","S5","S7","S8","S9","S11","S12", 
      "S1","S2","S3","S4","S7","S9","S10","S11","S12","S13","S14", 
      "S1","S2","S3","S5","S7","S8","S9","S10","S11","S12","S13","S14") 
d <- data.frame(probability=do.call(c,datList), 
       bin=paste0("bin",rep(1:3,sapply(datList,length))), 
       subject) 

library(nlme) 
m1 <- lme(probability~bin,random=~1|subject/bin,data=d) 
summary(m1) 

Единственная проблема заключается в том, что некоторые аспекты интерпретации и т.д. довольно вдали от классического подхода суммы-квадратов-декомпозиции (например, довольно сложно провести тесты значимости компонентов дисперсии). Pinheiro and Bates (Springer, 2000) настоятельно рекомендуется прочитать, если вы находитесь , направляясь в этом направлении.

Это может быть хорошая идея, чтобы имитировать/сделать некоторые сбалансированные данные и сделать анализ как с aov() и lme(), посмотрите на выходе, и убедитесь, что вы можете увидеть, где соответствия являются/знать, что происходит ,

+0

Спасибо! Я адаптировал свой код к своим данным, и вы правы, что я не уверен, как интерпретировать эти результаты. Я буду изучать lme(). Еще раз спасибо. знак равно –