3D-Darstellung der bivariaten Verteilung mit R oder Matlab
ich würde gerne wissen, ob jemand könnte mir sagen, wie Sie die Handlung etwas ähnlich wie diese
mit Histogrammen der Probe erzeugt aus dem folgenden code unter den beiden Kurven. Verwendung von R oder Matlab, aber vorzugsweise R.
# bivariate normal with a gibbs sampler...
gibbs<-function (n, rho)
{
mat <- matrix(ncol = 2, nrow = n)
x <- 0
y <- 0
mat[1, ] <- c(x, y)
for (i in 2:n) {
x <- rnorm(1, rho * y, (1 - rho^2))
y <- rnorm(1, rho * x,(1 - rho^2))
mat[i, ] <- c(x, y)
}
mat
}
bvn<-gibbs(10000,0.98)
par(mfrow=c(3,2))
plot(bvn,col=1:10000,main="bivariate normal distribution",xlab="X",ylab="Y")
plot(bvn,type="l",main="bivariate normal distribution",xlab="X",ylab="Y")
hist(bvn[,1],40,main="bivariate normal distribution",xlab="X",ylab="")
hist(bvn[,2],40,main="bivariate normal distribution",xlab="Y",ylab="")
par(mfrow=c(1,1))`
Vielen Dank im Voraus
Beste Grüße,
JC T.
- Der original-Matlab-code befindet sich neben der original-Datei auf Wikimedia. commons.wikimedia.org/wiki/File:MultivariateNormal.png (Quelle: erstellt habe ich die Grafik)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man es machen, in Matlab programmiert werden.
Dies ist das Ergebnis:
Code:
Ich muss zugeben, ich nahm dies als eine Herausforderung, denn ich war auf der Suche nach verschiedenen Möglichkeiten, um zu zeigen, dass andere Datensätze. Ich habe in der Regel etwas entlang der Linien von der
scatterhist
2D-Grafiken gezeigt, die in anderen Antworten, aber ich wollte versuchen meine hand aufrgl
für eine Weile.Ich deine Funktion zum generieren der Daten
Setup
Benutze ich
rgl
für die schwer heben, aber ich wusste nicht, wie man das Vertrauen der ellipse, ohne zucar
. Ich vermute, es gibt andere Möglichkeiten, zu attackieren.Prozess die Daten
Immer die Histogramm-Daten ohne Plotten, ich extrahieren Sie dann die dichten und normalisieren Sie in Wahrscheinlichkeiten. Die
*max
Variablen werden zur Vereinfachung der Zukunft zeichnen.Basic-scatterplot auf dem Boden
Die Waage sollte festgelegt werden, was auch immer angemessen ist, basierend auf den Distributionen. Zugegeben, die X-und Y-labels sind nicht schön, aber das sollte nicht allzu schwer sein, Sie neu zu positionieren, basierend auf den Daten.
Histogramme auf der Rückseite Wände
Ich konnte nicht herausfinden, wie man diese automatisch gezeichnet auf einer Ebene in der Allgemeinen 3D-Rendern, also musste ich jedes rect manuell.
Zusammenfassung Linien
Beautifications
Endprodukt
Einen bonus von mit
rgl
ist, dass Sie können drehen Sie es um mit Ihre Maus und finden Sie die besten Perspektive. Fehlt machen Sie eine animation an, SO dass Seite, machen alle der oben genannten sollte Ihnen ermöglichen, das Spiel-Zeit. (Wenn Sie es drehen, Sie werden in der Lage sein zu sehen, dass die Linien leicht vor der Histogramme und leicht über dem scatterplot; ansonsten fand ich die Schnittpunkte, so sah es aus noncontinuous zu stellen.)Am Ende, ich finde das ein bisschen störend (die 2D-Varianten genügt): zeigt die z-Achse impliziert, dass es eine Dritte dimension der Daten; Tufte ausdrücklich missbilligt dieses Verhalten (Tufte, "Envisioning Information", 1990). Jedoch eine höhere Dimensionalität, diese Technik der Verwendung von RGL wird, ermöglichen eine deutliche Perspektive auf Muster.
(Für die Platte, Win7 x64, getestet mit R-3.0.3 in 32-bit und 64-bit, rgl v0.93.996, Auto-v2.0-19.)
Erstellen der dataframe mit
bvn <- as.data.frame(gibbs(10000,0.98))
. Mehrere 2d-Lösungen inR
:1: Eine quick & dirty Lösung mit der
psych
Paket:sind die Ergebnisse in:
2: Eine schöne & hübsche Lösung mit
ggplot2
:sind die Ergebnisse in:
3: Eine kompakte Lösung mit
ggplot2
:sind die Ergebnisse in:
Matlab-Implementierung wird aufgerufen,
scatterhist
und erfordert die Statistik Toolbox. Leider ist es nicht 3D, es ist eine erweiterte 2D-plot.Es auch erlaubt die Gruppierung von Datensätzen:
R Umsetzung
Load library "Auto". Wir verwenden nur dataEllipse Funktion zum zeichnen der ellipse basiert auf der Prozent der Daten (von 0,95 bedeutet, dass 95% der Daten liegt innerhalb der ellipse).
Öffnen Sie eine PDF-Gerät:
Einrichten-layout-erste
Machen Scatterplot
Den Kommentarzeilen können verwendet werden, um ein scatter-plot-Diagramm ohne "Auto" - Paket, von wo aus wir verwenden dataEllipse Funktion
Plot Histogramm der variable X in der obersten Zeile
Plot Histogramm der variable Y, die rechts von der scatterplot -
Nahm ich @jaap code oben und verwandelte es in eine etwas allgemeinere Funktion. Der code bezogen werden können hier. Hinweis: ich bin nicht das hinzufügen von etwas neues auf @jaap-code, nur ein paar kleine änderungen und wickelte es in eine Funktion aus. Hoffentlich ist es hilfreich.