2016-10-30 5 views
0

Ich möchte zwei Variablen mit ggplot gegeneinander darstellen. Später möchte ich eine nichtlineare Anpassung verwenden, aber ich habe ein Problem mit einer Fehlermeldung, die ich nicht vollständig verstehe. Ich kann sehen, dass andere ähnliche Problem haben, aber ich kann nicht hell genug sein, um die Antwort zu verstehenstat_smooth - variable Länge unterscheidet sich

Ich habe einen Datensatz ost 4 Variablen enthält. Es gibt keine NAs im Datensatz.

mit ggplot2 Ich möchte die Daten mit einer Regressionslinie plotten. Der Einfachheit halber beginne ich mit der einfachen linearen Regression

library(ggplot2) 

qt_int <- c(404, 402, 426, 392, 418, 410) 
rr <- c(1000, 958, 982, 752, 824, 844) 
gender <- c('male','female','female','female','female','female') 
deltnr <- c(10445, 1022, 9122, 60, 246, 306) 
df = data.frame(deltnr, gender, qt_int, rr) 

p <- ggplot(df, aes(rr, qt_int)) 
p <- p + geom_point (size = 2) 
p <- p + stat_smooth(method = "lm", formula = qt_int ~ rr) 
p 

Ich erhalte die folgende Warnmeldung angezeigt:

Warnmeldungen: 1: ‚newdata‘ hatte 80 Zeilen aber gefunden Variablen haben 6702 Zeilen 2: Berechnung fehlgeschlagen in stat_smooth(): argumenter antyder forskelligt Antal rækker: 80, 6 [de: Argumente legen nahe unterschiedliche Anzahl der Zeilen: 80, 6]

Seltsamerweise funktioniert es, wenn ich Formel weglasse (aber später möchte ich nichtlineare Anpassung machen, also muss ich es zur Arbeit bringen)

Was fehlt mir?

+1

Well _ we_ fehlt 'int99' (d. h. Ihr Code ist nicht reproduzierbar) und _you_ benutzen '$' innerhalb 'ggplot' Funktionsaufrufen, was nicht so ist, wie' ggplot' wirklich funktioniert. – hrbrmstr

Antwort

1

Formeln in stat_smooth() müssen die Namen der ästhetischen Objekte verwenden (x, y, colour, etc.), und nicht den Namen der Variablen. Siehe help("stat_smooth"):

Formel: Formel in Glättungsfunktion zu verwenden, z. 'Y ~ x', 'y ~ Poly (x, 2)', 'y ~ log (x)'

OP schrieb:

p <- p + stat_smooth(method = "lm", formula = qt_int ~ rr) 

Aber der richtige Weg, die Formel zu schreiben ist :

p <- p + stat_smooth(method = "lm", formula = y ~ x) 

die die erwartete Ausgabe erzeugt:

enter image description here,

+0

Ich habe Ihren Standpunkt bezüglich der Benennung von Variablen bekommen. Obwohl es in meinen Augen gleichwertig erschien, habe ich den Code umgeschrieben und eine Teilmenge meiner Daten eingefügt. –

+0

Dafür gibt es zahlreiche Erklärungen (z. B. http://stackoverflow.com/a/32543753/4132844). Danke für die Daten – scoa

+0

Danke für das Öffnen meiner Augen. Ich habe einfach nicht verstanden, dass stat_smooth die Formel auf generische Weise (y ~ x) benötigt, anstatt die Variablennamen speziell zu verwenden. Sorry für die hässlichen Daten, aber das ist echte Biologie und es ist hässlich ;-). Jetzt funktioniert es auch für mich. Ich schätze Ihre Hilfe sehr. –

Verwandte Themen