Fehlermeldung bei pairwise.t.test
Moderator: jogo
Fehlermeldung bei pairwise.t.test
Liebe Alle,
Schreibe gerade an einem Experimentalbericht und verstehe diese Fehlermeldung einfach nicht
Ich habe eine numeric Variable und trenne die Stufen nach einer character Variable. Das war noch für die Funktion ezANOVA kein Problem. Es gibt laut der ANOVA mit Messwiederholung wohl signifikante Unterschiede. Also teste ich weiter mit pairwise.t.test, um die signifikante Stufe zu entdecken.
> pairwise.t.test(farbig$evs, farbig$item, p.adj = "bonferroni", paired = T)
Error in complete.cases(x, y) : nicht alle Argumente haben gleiche Länge
Was sagt mir die Fehlermeldung? Wie korrigiere ich es? Wie entdecke ich sonst die signifikante Stufe? Doof wie ich bin hab ich natürlich wieder bis kurz vor Abgabetermin gewartet :/
VG Markus
Schreibe gerade an einem Experimentalbericht und verstehe diese Fehlermeldung einfach nicht
Ich habe eine numeric Variable und trenne die Stufen nach einer character Variable. Das war noch für die Funktion ezANOVA kein Problem. Es gibt laut der ANOVA mit Messwiederholung wohl signifikante Unterschiede. Also teste ich weiter mit pairwise.t.test, um die signifikante Stufe zu entdecken.
> pairwise.t.test(farbig$evs, farbig$item, p.adj = "bonferroni", paired = T)
Error in complete.cases(x, y) : nicht alle Argumente haben gleiche Länge
Was sagt mir die Fehlermeldung? Wie korrigiere ich es? Wie entdecke ich sonst die signifikante Stufe? Doof wie ich bin hab ich natürlich wieder bis kurz vor Abgabetermin gewartet :/
VG Markus
Re: Fehlermeldung bei pairwise.t.test
Hallo Markus,
willkommen im Forum!
Gruß, Jörg
willkommen im Forum!
Bitte zeig doch mal den Output vonFortuneCookie hat geschrieben: ↑Di Sep 26, 2017 1:03 pmCode: Alles auswählen
> pairwise.t.test(farbig$evs, farbig$item, p.adj = "bonferroni", paired = T) Error in complete.cases(x, y) : nicht alle Argumente haben gleiche Länge
Code: Alles auswählen
str(farbig)
summary(farbig)
viewtopic.php?f=20&t=46Doof wie ich bin hab ich natürlich wieder bis kurz vor Abgabetermin gewartet :/
Gruß, Jörg
Re: Fehlermeldung bei pairwise.t.test
Hey jogo,
Vielen lieben Dank für deine Antwort mit Raketengeschwindigkeit! Was sagt denn die erwähnte Fehlermeldung genau? Ich verstehe es nicht. Hier der erbetene Output:
Vielen lieben Dank für deine Antwort mit Raketengeschwindigkeit! Was sagt denn die erwähnte Fehlermeldung genau? Ich verstehe es nicht. Hier der erbetene Output:
Re: Fehlermeldung bei pairwise.t.test
Hallo Markus,
verzichte doch mal auf das paired=TRUE (ich kann mir nur schwer vorstellen, dass ein Elefant mit einem Schmetterling identisch sein kann)
also dass z.B. die Anzahl der Elefanten nicht mit der Anzahl der Schmetterlinge übereinstimmt.
Gruß, Jörg
p.s.:
Du kannst dann in den anderen Foren, wo Du diese Frage auch noch gestellt hast, auf die Antworten hier verweisen
verzichte doch mal auf das paired=TRUE (ich kann mir nur schwer vorstellen, dass ein Elefant mit einem Schmetterling identisch sein kann)
Code: Alles auswählen
pairwise.t.test(farbig$evs, farbig$item, p.adj = "bonferroni")
Eigentlich sagt die Fehlermeldung genau das, was dort geschrieben steht:Was sagt denn die erwähnte Fehlermeldung genau? Ich verstehe es nicht.
also dass z.B. die Anzahl der Elefanten nicht mit der Anzahl der Schmetterlinge übereinstimmt.
Code: Alles auswählen
set.seed(42)
farbig <- data.frame(evs=runif(100), item=rep(c("Ele", "Krok", "Schmett", "Mops"), each=25), stringsAsFactors = FALSE)
pairwise.t.test(farbig$evs, farbig$item, p.adj = "bonferroni", paired = TRUE)
pairwise.t.test(farbig$evs, farbig$item, p.adj = "bonferroni")
farbig <- data.frame(evs=runif(100), item=rep(c("Ele", "Krok", "Schmett", "Mops"), c(23,24,26,27)), stringsAsFactors = FALSE)
pairwise.t.test(farbig$evs, farbig$item, p.adj = "bonferroni", paired = TRUE)
pairwise.t.test(farbig$evs, farbig$item, p.adj = "bonferroni")
p.s.:
Du kannst dann in den anderen Foren, wo Du diese Frage auch noch gestellt hast, auf die Antworten hier verweisen
Re: Fehlermeldung bei pairwise.t.test
In gepaarten/verbundenen Stichproben sind von jeder Tierart genau gleichviele enthalten. Die Zahl der Fälle ist 379 und das ist eine Primzahl! Verbundene Stichproben kommen also gar nicht in Frage.
@jogo: Seit wann schreibst Du "paired = T" anstelle von "paired = TRUE" Erwischen wir Dich demnächst bei einem attach()?
LG,
Bernhard
@jogo: Seit wann schreibst Du "paired = T" anstelle von "paired = TRUE" Erwischen wir Dich demnächst bei einem attach()?
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Fehlermeldung bei pairwise.t.test
und selbst gleiche Anzahl ist noch lange nicht ausreichend für paired:
die Sachlogik muss auch stimmen (es müssen in der gleichen Reihenfolge identische Merkmalsträger sein).
Ich war das nicht: der Teil stammte von Markus; der Rest war einfache Copypaste.@jogo: Seit wann schreibst Du "paired = T" anstelle von "paired = TRUE" Erwischen wir Dich demnächst bei einem a...ch()?
Aber natürlich hast Du Recht: wir wollen hier nicht so schlampigen Code als Vorbild hinstellen. Ich habe meine Nachricht inzwischen editiert.
... und nein, es ist nicht absehbar, dass sich meine Einstellung zu der bösen Funktion ändert.
Gruß, Jörg
Re: Fehlermeldung bei pairwise.t.test
Verdammt, ihr seid echt gut Das mit der Primzahl haut mich aus den Socken, Du hast mich wahrhaftig verblüfft! Ich werde dem mal nachgehen und versuchen festzustellen, warum die Items nicht gleich oft angewandt wurden. Vielen vielen lieben Dank für den generierten Code!
paired = TRUE hab ich benutzt, weil es die gleichen Probanden sind, die sowohl Elefanten als auch Schmetterlinge betrachtet haben. EVS (Eye-Voice-Span) ist also messwiederholt und mein "R für Einsteiger" sagte mir das wäre das richtige Argument.
Ich dachte ich lasse den maximal effizienten Naturwissenschaftler heraushängen und hab TRUE abgekürzt, da es so grundsätzlich angenommen wird. Ist das schlampig?
paired = TRUE hab ich benutzt, weil es die gleichen Probanden sind, die sowohl Elefanten als auch Schmetterlinge betrachtet haben. EVS (Eye-Voice-Span) ist also messwiederholt und mein "R für Einsteiger" sagte mir das wäre das richtige Argument.
Ich dachte ich lasse den maximal effizienten Naturwissenschaftler heraushängen und hab TRUE abgekürzt, da es so grundsätzlich angenommen wird. Ist das schlampig?
Re: Fehlermeldung bei pairwise.t.test
von der Idee her stimmt die Sachlogik und paired=TRUE wäre richtig.FortuneCookie hat geschrieben: ↑Di Sep 26, 2017 7:42 pmpaired = TRUE hab ich benutzt, weil es die gleichen Probanden sind, die sowohl Elefanten als auch Schmetterlinge betrachtet haben. EVS (Eye-Voice-Span) ist also messwiederholt und mein "R für Einsteiger" sagte mir das wäre das richtige Argument.
Nur Deine Daten passen nicht recht zu den Messwiederholungen.
Ja, das ist schlampig ... und kann gefährlich werden, denn ein Objekt mit dem Namen T kann man selbst definieren, z.B.:Ich dachte ich lasse den maximal effizienten Naturwissenschaftler heraushängen und hab TRUE abgekürzt, da es so grundsätzlich angenommen wird. Ist das schlampig?
Code: Alles auswählen
T <- 0
FALSE==T ### oho, diese beiden Sachen sind gleich
Code: Alles auswählen
TRUE <- 0 ### Fehlermeldung!
Re: Fehlermeldung bei pairwise.t.test
Leider muss ich nochmal deine Hilfe anfordern. Ich hänge hier wieder seit Stunden und komme nicht voran. Schäme mich auch dich darum zu bitten meine Arbeit zu machen
Mein Dozent, sein Praktikant, oder sein Algorithmus hat bei der Erzeugung des EVS wohl einzelne Daten entfernt, nach welcher Regel weiß ich nicht. Mit der Funktion table(farbig$sid) habe ich die Probanden identifiziert, für die keine vollständigen Daten vorliegen. Muss ich die nun wirklich händisch entfernen? Im Grunde möchte ich einen Datensatz erzeugen mit der Variablenausprägung sid == (Häufigkeit der spezifischen Variablenausprägung == 25). Kann R sowas? Oder werde ich jetzt händisch alle Zeilen entfernen?
EDIT: Hab es inzwischen händisch entfernt, fände es aber für die Zukunft interessant, ob und wie es sonst automatisiert zu lösen ist.
Mein Dozent, sein Praktikant, oder sein Algorithmus hat bei der Erzeugung des EVS wohl einzelne Daten entfernt, nach welcher Regel weiß ich nicht. Mit der Funktion table(farbig$sid) habe ich die Probanden identifiziert, für die keine vollständigen Daten vorliegen. Muss ich die nun wirklich händisch entfernen? Im Grunde möchte ich einen Datensatz erzeugen mit der Variablenausprägung sid == (Häufigkeit der spezifischen Variablenausprägung == 25). Kann R sowas? Oder werde ich jetzt händisch alle Zeilen entfernen?
EDIT: Hab es inzwischen händisch entfernt, fände es aber für die Zukunft interessant, ob und wie es sonst automatisiert zu lösen ist.
Re: Fehlermeldung bei pairwise.t.test
ja, das kann man automatisieren, z.B. so:
aber auch Dein Ansatz lässt sich entsprechend ausbauen:
Gruß, Jörg
Code: Alles auswählen
farbig$N.sid <- ave(!is.na(farbig$sid), farbig$sid, FUN=sum)
farbig[farbig$N.sid==25L,]
Code: Alles auswählen
names(which(table(farbig$sid))!=25) # sind das die vp.. mit unvollständigen Daten?
farbig.reduziert <- farbig[!(farbig$sid %in% names(which(table(farbig$sid))!=25)),]