Ich bin neu bei R. Ich war über Stack Overflow und suche vielleicht nicht richtig nach der Antwort, die ich möchte.Wahrscheinlichkeitsverteilung über die Zeit?
Ich habe eine Matrix mit eindeutigen dyadischen Beziehungen als Zeilen und Jahre als Spalten. Die Zellen sind mit einer 0 besetzt, wenn die beiden Personen in diesem Jahr nicht interagieren, und eine 1, wenn sie es taten.
Ich versuche, ein Prozent für jede Zelle zu berechnen - die Anzahl der Male 1 auftritt relativ zu der Anzahl der Einträge nach dem ersten Auftreten von 1. Umgangssprachlich wäre dies nur wie oft zwei Menschen jedes Jahr seit ihrer Begegnung interagiert haben .
Das erste Auftreten von 1 in einer Zeile wäre immer 100%. Zum Beispiel, Reihe B aus dem Beispiel unten:
V1 V2 V3 V4
A 0 0 1 0
B 1 1 0 0
Wird
100 100 66 50
ich die kumulative Summe für jede Zelle der Matrix so weit bekam
als Berechnungdata <- matrix(sample(0:1,5*4,rep=T),4)
test<-t(apply(data,1,cumsum))
Und dann meine Die Idee war, eine Funktion wie die folgende zu erstellen, aber ich bleibe bei dem Ausdruck, der für den Nenner verwendet werden soll (unten wird nur die Anzahl der Einträge vor dem ersten Auftreten von einem entfernt). Ich weiß nicht genau, wie man zukünftige Fälle abschneidet, oder referenziere direkt den Spaltenindex einer Matrix.
mm<-function(x){(x)/(ncol(data)-(which(x>0)[1]))}
tmp_int<-apply(data, 1:2, mm)
Oder gibt es eine viel einfachere Möglichkeit, dies zu tun? Ich versuchte, die ecdf Funktion zu benutzen, aber es gab NA zurück.
Vielen Dank.
Sind nicht teilen 't (anwenden (Daten, 1, cumsum)/(1: ncol (daten))) * 100' was du suchst? – nicola