2016-06-16 6 views
2

In R, was ist eine gute Möglichkeit zum Erstellen einer Wahrscheinlichkeitsverteilungstabelle (die für die Stichprobe verwendet wird)? sagen, dass ich die folgende Wahrscheinlichkeitsverteilung haben:In R, eine Wahrscheinlichkeitsverteilungstabelle erstellen

x y p(x,y) 
100 0  0.5 
100 100  0.1 
100 200  0.1 
250 0  0.1 
250 100  0.1 
250 200  0.1 

Ist Datenrahmen die am besten geeignete Art für diesen Zweck? Was ist eine einfache und elegante Art, einen Datenrahmen (oder eine andere geeignete Struktur) zu erstellen, der diese Wahrscheinlichkeitsverteilung enthält?

EDIT: Ich verstehe, dass ich einfach drei Vektoren in einen Datenrahmen verketten könnte. Ich habe mich nur gefragt, ob es eine klarere Art und Weise der Konstruktion einer solchen Tabelle ist, wie (R Pseudo-Code):

p[100,0] <- 0.5 
p[100,100] <- 0.1 
... 
+0

Von Ihrem bearbeiten, es scheint, dass ich Ihre Frage falsch verstanden, und Sie waren tatsächlich zu fragen, wie dieser Datenrahmen zu konstruieren . Siehe meine Bearbeitung unten. Habe ich deine Frage jetzt beantwortet? – Kodiologist

Antwort

0

Diese Struktur ist in Ordnung. Hier ist, wie man 10 Proben daraus ziehen würde:

d[sample(1:nrow(d), 10, rep = T, prob = d$"p(x,y)"), -ncol(d)] 

Wir rep = T verwenden mit Ersatz zu probieren.

Beachten Sie, dass das Argument prob nicht normalisiert werden muss, um zu 1 zu summieren. R kümmert sich automatisch darum.

bearbeiten Antworten auf Ihre bearbeiten: Sie den Datenrahmen oben wie folgt konstruieren:

d = data.frame(
    x = c(100, 100, 100, 250, 250, 250), 
    y = c(0, 100, 200, 0, 100, 200), 
    p = c(.5, .1, .1, .1, .1, .1)) 
+0

'T' ist nicht" geschützt "und kann leicht und oft durch Fehler neu definiert werden. 'TRUE' ist viel sicherer und nur 3 zusätzliche Buchstaben. – hrbrmstr