Ich möchte die Annahmen der linearen (und später anderen Typ) Regression grafisch darstellen. Wie kann ich mein Grundstück kleinen Gaußschen Dichten (oder irgendeine Art von Dichten) auf einer Regressionslinie hinzufügen wie in dieser Figur:ggplot2: Wie kurbelt man kleine Gaußsche Dichten auf einer Regressionsgeraden?
7
A
Antwort
9
Sie können die empirischen Dichten der Residuen für die Abschnitte entlang eines Einbaus berechnen Linie. Dann ist es nur eine Frage der Zeichnung der Linien an den Positionen Ihrer Wahl in jedem Intervall mit geom_path
. Um eine theoretische Verteilung hinzuzufügen, erzeugen Sie einige Dichten entlang des Bereichs der Residuen für jeden Abschnitt (hier unter Verwendung der normalen Dichte). Für die Normal Densities unten wird für jeden Abschnitt die Standardabweichung aus den Residuen bestimmt, aber Sie können für alle eine Standardabweichung wählen und diese stattdessen verwenden.
## Sample data
set.seed(0)
dat <- data.frame(x=(x=runif(100, 0, 50)),
y=rnorm(100, 10*x, 100))
## breaks: where you want to compute densities
breaks <- seq(0, max(dat$x), len=5)
dat$section <- cut(dat$x, breaks)
## Get the residuals
dat$res <- residuals(lm(y ~ x, data=dat))
## Compute densities for each section, and flip the axes, and add means of sections
## Note: the densities need to be scaled in relation to the section size (2000 here)
dens <- do.call(rbind, lapply(split(dat, dat$section), function(x) {
d <- density(x$res, n=50)
res <- data.frame(x=max(x$x)- d$y*2000, y=d$x+mean(x$y))
res <- res[order(res$y), ]
## Get some data for normal lines as well
xs <- seq(min(x$res), max(x$res), len=50)
res <- rbind(res, data.frame(y=xs + mean(x$y),
x=max(x$x) - 2000*dnorm(xs, 0, sd(x$res))))
res$type <- rep(c("empirical", "normal"), each=50)
res
}))
dens$section <- rep(levels(dat$section), each=100)
## Plot both empirical and theoretical
ggplot(dat, aes(x, y)) +
geom_point() +
geom_smooth(method="lm", fill=NA, lwd=2) +
geom_path(data=dens, aes(x, y, group=interaction(section,type), color=type), lwd=1.1) +
theme_bw() +
geom_vline(xintercept=breaks, lty=2)
Oder nur Gaußschen Kurven
Verwandte Themen
- 1. Regressionsgeraden erweitern mit geom_line() ggplot2
- 2. Wie interpretiere ich die verschiedenen ggplot2 Dichten?
- 3. Mehrere Diagramme mit mehreren Dichten in ggplot2
- 4. plot kleine Region einer großen Polygon-Karte in ggplot2
- 5. ggplot2: wie man abwechselnde Tage auf einer Handlung transparent schattiert
- 6. Wie man kleine Ticks auf die Symlog-Skala legt?
- 7. Gaußsche Unschärfe im Vollbildmodus
- 8. Geschätzte Gaußsche (Gemisch) Dichte aus einer Reihe von gewichteten Stichproben
- 9. Gaußsche Unschärfe in Android
- 10. Gaußsche Eliminierung in C
- 11. Verteilungen und Dichten in R
- 12. Wie man kleine Werte in einem Array auf Null setzt?
- 13. Gaußsche Rauschen in SystemVerilog
- 14. Wie stat_binhex auf einer logarithmischen Skala in ggplot2 dargestellt wird
- 15. OpenCV Gaußsche Unschärfe bricht Tesseract?
- 16. Wie man facet Etikett dynamisch mit ggplot2
- 17. Wie auf einem ggplot2 Scatterplot
- 18. Zeichne Gaußsche Kurve in Java
- 19. Wie spezifiziert man Zeitintervall Achse auf facet_wrap Funktion in ggplot2?
- 20. Wie kann man eine "kleine URL" basierend auf einer ID erzeugen?
- 21. Hilfe zu verstehen, wie man ein Balkendiagramm mit ggplot2
- 22. Wie wird mit zahlreichen Kombinationen von Bildschirmgrößen und -dichten umgegangen?
- 23. ggplot2: Wie unterscheidet man Klick von Pinsel?
- 24. Gaußsche Eliminierung mit benutzerdefinierten Operatoren
- 25. Apache Funke Verständnis dichten Vektor
- 26. Gewichtete Gaußsche Kerndichte-Schätzung in `python`
- 27. Wie man Barplots in ggplot2 überlagern kann
- 28. ggplot2: wie man die Legende zeigt
- 29. ggplot2: Sortieren einer Handlung
- 30. implementieren dichten Rang mit Linq
Sie etwas Hilfe von https://stats.stackexchange.com/ bekommen könnte zu – lispHK01
[Diese Frage] (http://stackoverflow.com/a/13334294/903061) ist ziemlich verwandt. Wenn Sie das 'hist' in meiner Antwort so geändert haben, dass' 'dnorm'' anstelle von Daten verwendet wird, kann es sein, dass Sie mit Grunddiagrammen ein bisschen schließen. – Gregor
Möchten Sie, dass es auf den zugrunde liegenden Daten basiert (auch wenn simuliert)? Oder begnügen Sie sich, in regelmäßigen Abständen perfekte kleine 'dnorm's zu zeichnen? – Gregor