Ich mache PRC mit dem vegan-Paket, aber in Schwierigkeiten geraten, wenn ich versuche, eine Anova auf die Ergebnisse durchzuführen. Ich erhalte die folgende Fehlermeldung:Eingeschränkte Permutation (permutieren) scheitert mit shuffleSet und läuft mit shuffle
Error in doShuffleSet(spln[[i]], nset = nset, control) :
number of items to replace is not a multiple of replacement length
Das Problem entsteht in der shuffleSet-Funktion des permute-Pakets. Ich habe unten ein reproduzierbares Beispiel erstellt. Das Seltsame ist, dass die Shuffle-Funktion keine Probleme verursacht, sondern die ShuffleSet-Funktion.
In meinem Experiment wurden 3 Behandlungen an 4 Tiere gegeben. Die Tiere erhielten die Behandlungen in unterschiedlicher Reihenfolge. An jedem Tag wurden 5 Proben im Laufe der Zeit gesammelt.
Ich möchte meine Beobachtungen innerhalb von Tieren und nicht zwischen ihnen permutieren. Daher benutze ich AnimalID als Block.
Ich möchte Tage permutieren (in meinen tatsächlichen Experimenten erhielten Tiere die gleiche Behandlung mehrmals), aber behalten Sie die Maße innerhalb eines Tages intakt. Daher habe ich beschlossen, Tage frei zu vertauschen und habe keine Permutationen innerhalb von Tagen.
require(permute)
TreatmentLevels=3
Animals=4
TimeSteps=5
AnimalID=rep(letters[1:Animals],each=TreatmentLevels*TimeSteps)
Time=rep(1:TimeSteps,Animals=TreatmentLevels)
#treatments were given in different order per animal.
Day=rep(c(1,2,3,2,3,1,3,2,1,2,3,1),each=TimeSteps)
Treatment=rep(rep(LETTERS[1:TreatmentLevels],each=TimeSteps),Animals)
dataset=as.data.frame(cbind(AnimalID,Treatment,Day,Time))
ctrl=how(blocks = dataset$AnimalID,plots = Plots(strata=dataset$Day,type = "free"),
within=Within(type="none"), nperm = 999)
#this works
shuffle(60,control=ctrl)
#this giveas an error
shuffleSet(60,nset=1,control=ctrl)
shuffleSet(60,nset=10,control=ctrl)
Das Problem scheint in dem Block zu sein. Da diese
dataset$AnimalDay=factor(paste0(dataset$AnimalID,dataset$Day))
ctrl=how(plots = Plots(strata=dataset$AnimalDay,type = "free"),
within=Within(type="none"), nperm = 999)
#this works
shuffle(60,control=ctrl)
shuffleSet(60,nset=1,control=ctrl)
shuffleSet(60,nset=10,control=ctrl)
Es scheitert auch mit nset = 10 – Nightingale
Ich kann dies nicht bestätigen: es funktioniert OK mit nset = 10, wenn ich es versuche. Außerdem funktioniert 'shuffleSet' in allen Fällen auch mit' nset = 1'. Die Sache, die fehlschlägt, zeigt ihr Ergebnis auf dem Bildschirm an. Die Fehlermeldung kommt von 'print.permutationMatrix()', und wenn Sie das Ergebnis ohne Anzeige mit 'p <- shuffleSet (60, nset = 1, control = ctrl) speichern, erhalten Sie keinen Fehler. –
Nur um klar zu sein: Ich habe nie die Fehlermeldung, die Sie gemeldet haben ('Anzahl der zu ersetzenden Elemente ist kein Vielfaches der Ersatzlänge'), die wie ein Benutzerfehler klingt. Die Nachricht, die ich erhielt, war "ungültig, um die Klasse auf eine Matrix zu setzen, es sei denn, das Dimensionsattribut hat die Länge 2 (war 0)", was durch das Ausdrucken der Permutationen entsteht. Der Grund dafür liegt auf der Hand: Mit 'nset = 1' werden die Permutationen auf einen Vektor anstatt auf eine einzeilige Matrix reduziert. Der zweite Fall, den Sie mit "AnimalDay" -Faktor gemeldet haben, funktioniert in "print", da er nicht auf einen Vektor fällt. In beiden Fällen funktioniert 'shuffleSet'. –