2016-07-14 7 views
-1

Ich versuche, die Vorhersagen eines lmer Modells mit dem folgenden Code zu zeichnen:entfernen Beugungen am Ende der Linien von geom_line()

p1 <- ggplot(Mac_Data_Tracking, aes(x = Rspan, y = SubjEff, colour = NsCond)) + 
geom_point(size=3) + 
geom_line(data=newdat, aes(y=predict(SubjEff.model,newdata=newdat)),lineend="round") 
print(p1) 

ich seltsam Beugungen am Ende jeder Zeile zu bekommen, gibt es eine Weg sie zu entfernen? Ich habe die Daten in newdat geändert, aber die Zeilen haben immer diese Beugungen.

Linien mit Inflections an den Enden:

enter image description here

Antwort

0

Es war ein Problem mit mit 2 x-Werten, eigentlich ... es wurde mit 2 Subjektwerte.

Das lineare Mischmodell ist: Mixed.model < - lmer (Outcome ~ NsCond + RSPAN + (1 | Subject), data = Data))

Für NEWDAT, ich war intially mit:

newdat <- expand.grid(Subject=c(min(Data$Subject),max(Data$Subject)),Rspan=c(min(Data$Rspan), max(Data$Rspan)),NsCond=unique(Data$NsCond)) 

Was mir gab:

 Subject  Rspan NsCond 
1  1 0.2916667 Pink 
2  18 0.2916667 Pink 
3  1 1.0000000 Pink 
4  18 1.0000000 Pink 
5  1 0.2916667 Babble 
6  18 0.2916667 Babble 
7  1 1.0000000 Babble 
8  18 1.0000000 Babble 
9  1 0.2916667 Loss 
10  18 0.2916667 Loss 
11  1 1.0000000 Loss 
12  18 1.0000000 Loss 

Für jeden RSPAN (x) gibt es 2 "Subjects" (1 und 18).

änderte ich NEWDAT zu:

newdat <- expand.grid(Subject=1,Rspan=c(min(Data$Rspan), max(Data$Rspan)),NsCond=unique(Data$NsCond)) 

was zur Folge hat:

Subject  Rspan NsCond 
1  1 0.2916667 Pink 
2  1 1.0000000 Pink 
3  1 0.2916667 Babble 
4  1 1.0000000 Babble 
5  1 0.2916667 Loss 
6  1 1.0000000 Loss 

Now it looks good

1

Beachten Sie, dass Sie geom_line(data=newdat, aes(y=predict(SubjEff.model,newdata=newdat)) haben. Sie haben also newdat bis geom_line als Datenrahmen für das Plotten gefüttert. Aber dann für Ihren y-Wert liefern Sie einen separaten Vektor von Vorhersagen (basierend auf newdat), wenn y eigentlich nur eine Spalte von newdat sein sollte. Ich bin nicht sicher, warum das die Beugungen an den Enden verursacht (wahrscheinlich gibt es irgendwie zwei unterschiedliche y-Werte, die für jeden Endpunkt x-Werte bereitgestellt werden), aber das ist wahrscheinlich die Quelle Ihres Problems.

Stattdessen sollten Sie eine Spalte in newdat mit den Vorhersagen erstellen (falls Sie dies nicht bereits getan haben) und diesen Spaltennamen an ggplot als y in geom_line einspeisen. Um eine Spalte von Prognosen hinzuzufügen, gehen Sie wie folgt vor:

newdat$pred = predict(SubjEff.model,newdata=newdat) 

Sie sollten auch geom_line die x Werte geben, die den y Werte in newdat entsprechen. So würde Ihr Code sein:

geom_line(data=newdat, aes(y=pred, x=Rspan), lineend="round") 

(. Wo Rspan wird (automatisch) die Rspan Spalt in newdat)

+0

Klingt wie Sie haben es herausgefunden, aber ich habe meine Antwort aktualisiert, nur im Fall. – eipi10

Verwandte Themen