Migrationsmatrix Rechnung

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Antworten
consuli
Beiträge: 479
Registriert: Mo Okt 10, 2016 8:18 pm

Migrationsmatrix Rechnung

Beitrag von consuli »

Hallo!

Ich hatte früher mal was gelernt, wo mir nun temporär abhanden gekommen ist, Migrationsmatrizen aka Übergangsmatrizen.

Gegeben sei eine Menge A mit Untermengen A1, A2, A3, ...
deren Elementanzahlen als Vektor a bekannt ist.

Weiterhin migrieren die Elemente zwischen den Untermengen und die Übergangswahrscheinlichkeiten sind bekannt.

Wie muss ich nun die Übergangswahrscheinlichkeiten in eine Migrationsmatrix M schreiben, damit ich in Matritzenrechnung rechnen kann

a(t=1)= a(t=0) %*% M

oder ähnlich

Consuli
Irmgard.
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Migrationsmatrix Rechnung

Beitrag von jogo »

Hallo consuli,

stell Dir vor, zum Zeitpunkt t0 wäre nur die Menge A1 belegt (z.B. 100) und alle anderen Mengen A2, A3, ... hätten 0 Elemente. Dann ist klar, für den Übergang der Elemente aus A1 in eine andere Menge ist die erste Zeile der Matrix M verantwortlich ...
Dein Vektor a.t0 muss als Zeilenvektor interpretiert werden. Der Vektor a.t1 <- a.t0 %*% M ist wieder ein Zeilenvektor.

Gruß, Jörg
consuli
Beiträge: 479
Registriert: Mo Okt 10, 2016 8:18 pm

Re: Migrationsmatrix Rechnung

Beitrag von consuli »

Vielen Dank jogo.

Werde ich gleich mal ausprobieren ...
Irmgard.
consuli
Beiträge: 479
Registriert: Mo Okt 10, 2016 8:18 pm

Re: Migrationsmatrix Rechnung

Beitrag von consuli »

... und passt genau!

Jetzt habe ich nur noch eine kleine Erweiterung.

Ich brauche nun noch den repräsentativen (mittleren) Anzahlvektor a* für eine Periode mit T Migrationen (von t=0 bis t=T). Z.B. sei T= 10. Entspricht der representative Anzahlvektor a* dann a.t4.5 ? Müsste ja eigentlich so sein, wenn sich die Migrationswahrscheinlichkeiten (ohne Wachstum oder Rezession, wovon ich ausgehe) immer zeilenweise zu 1 addieren. Wie berechne ich dann die halbe Migration?

Und wie schreibe ich das ganze für die Dokumentation dann in einer allgemeinen mathematischen Formel für T Perioden? Es gibt ja kein Matrix-Reihen-Multiplikations-Zeichen! :?:

Consuli
Irmgard.
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Migrationsmatrix Rechnung

Beitrag von jogo »

consuli hat geschrieben: Mi Jul 12, 2017 8:20 pm ... und passt genau!
prima
Jetzt habe ich nur noch eine kleine Erweiterung.

Ich brauche nun noch den repräsentativen (mittleren) Anzahlvektor a* für eine Periode mit T Migrationen (von t=0 bis t=T). Z.B. sei T= 10. Entspricht der representative Anzahlvektor a* dann a.t4.5 ? Müsste ja eigentlich so sein, wenn sich die Migrationswahrscheinlichkeiten (ohne Wachstum oder Rezession, wovon ich ausgehe) immer zeilenweise zu 1 addieren. Wie berechne ich dann die halbe Migration?
Wenn ich Dich richtig verstanden habe hast Du jetzt 10 verschiedene Matrizen M_i, die nacheinander wirken (Schritt für Schritt bzw. Jahr für Jahr o.w.a.i) und die durchschnittliche Migrationsmatrix für die Hälfte des Zeitraums, richtig?
Und wie schreibe ich das ganze für die Dokumentation dann in einer allgemeinen mathematischen Formel für T Perioden? Es gibt ja kein Matrix-Reihen-Multiplikations-Zeichen! :?:
Du kannst Dir eine Funktion schreiben, die eine Liste von Matrizen als Argument nimmt und als Ergebnis deren Produkt zurückliefert.
Mit der Quadratwurzel aus diesem Produkt ist es etwas tricky
(andererseits auch wieder ziemlich einfach, wenn man den Kunstgriff kennt):
Man kann beliebige Funktionen einer Matrix berechnen z.B. sin(A) oder e^A - aber nicht wie R es meint elementweise - sondern in einem korrekten algebraischen Sinn, wenn man eine Reihenentwicklung verwendet, die (falls man Glück hat) konvergiert.
Du benötigst also eine Taylorreihe für die Funktion sqrt(A).

Code: Alles auswählen

A <- matrix(c(0.85, 0.05, 0.10,  0.07, 0.90, 0.03,  0.08, 0.02, 0.90), 3, byrow = TRUE)
A

m <- nrow(A)
n <- 5 # Anzahl der Ableitungen
z <- c(1, seq(1, by=2, length.out = n-1))
fi <- -1             
S <- diag(x=1, m,m)  # hier wird der Wert für sqrt(A) berechnet
Delta <- A - S
Delta.i <- S
for (i in 1:n) {
  fi <- -fi*z[i]/2/i   # Koeffizient im i-ten Glied der Reihe
  Delta.i <- Delta.i %*% Delta
  S <- S + fi*Delta.i
  print(S)
}

S %*% S ### Probe
A
Gruß, Jörg
p.s.:
ich schau mal, ob sich alternativ ein Algorithmus verwenden lässt, den man bei der Berechnung der Quadratwurzel mit einem Abakus einsetzt.
(Es gibt einige Verfahren, um mit einem Soroban eine Quadratwurzel auszurechnen. Ich habe folgendes im Sinn: https://de.wikipedia.org/wiki/Heron-Verfahren)
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Migrationsmatrix Rechnung

Beitrag von jogo »

Auch das Verfahren von Heron funktioniert:

Code: Alles auswählen

#### Heron https://de.wikipedia.org/wiki/Heron-Verfahren
A <- matrix(c(0.85, 0.05, 0.10,  0.07, 0.90, 0.03,  0.08, 0.02, 0.90), 3, byrow = TRUE)
A
m <- nrow(A)
S <- diag(x=1, m,m)  # hier wird der Wert für sqrt(A) berechnet
n <- 3 # Anzahl der Iterationen
for (i in 1:n) {
  S <- 0.5*(S + solve(S, A))
  print(S)
}

S %*% S ### Probe
A
Da es sich hierbei um das Newton-Verfahren für die iterative Berechnung einer Nullstelle handelt, konvergiert es quadratisch.

Gruß, Jörg
consuli
Beiträge: 479
Registriert: Mo Okt 10, 2016 8:18 pm

Re: Migrationsmatrix Rechnung

Beitrag von consuli »

Das Problem der ungeraden mittleren Periode habe ich einfach schlank durch aufrunden auf eine gerade Totalperiodenlänge gelöst. :P

Jetzt ist nur noch die mathematische Formel offen.
consuli hat geschrieben:Und wie schreibe ich das ganze für die Dokumentation dann in einer allgemeinen mathematischen Formel für T Perioden? Es gibt ja kein Matrix-Reihen-Multiplikations-Zeichen! :?:
jogo hat geschrieben:Du kannst Dir eine Funktion schreiben, die eine Liste von Matrizen als Argument nimmt und als Ergebnis deren Produkt zurückliefert.
Nein, nix R will ich wissen. Ich brauche nur dieses mathematische Formelzeichen groß PI zum verketten von Faktoren! Nur mit Aadaption für Matrizenmultiplikation.
Irmgard.
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Migrationsmatrix Rechnung

Beitrag von jogo »

consuli hat geschrieben: Fr Jul 14, 2017 10:03 pmNein, nix R will ich wissen. Ich brauche nur dieses mathematische Formelzeichen groß PI zum verketten von Faktoren! Nur mit Aadaption für Matrizenmultiplikation.
so, jetzt verlassen wir definitiv das Thema R. :?
(deshalb auch nachfolgend nicht mehr R-Operator für die Matrizenmultiplikation sondern mathematische Symbolik)
Was passt Dir denn an dem großen Pi nicht? Es ist in der Mathematik gut genug für das Aufmultiplizieren von natürlichen Zahlen, ganzen Zahlen, rationalen Zahlen, reellen Zahlen und auch komplexen Zahlen ohne dass jemand die Notwendigkeit empfand, für eine neue Menge von Objekten jeweils ein neues Symbol einzuführen.
Wenn Du das Produktzeichen vermeiden möchtest und mit etwas mehr Schreibaufwand etwas mehr Klarheit haben möchtest, kannst Du die übliche Auflösung des Symbols verwenden:
M_gesamt := M_1 * ... * M_10
Nun soll eine Matrix M_halbeDauer bestimmt werden, so dass:
M_halbeDauer * M_halbeDauer = M_gesamt

Gruß, Jörg
consuli
Beiträge: 479
Registriert: Mo Okt 10, 2016 8:18 pm

Re: Migrationsmatrix Rechnung

Beitrag von consuli »

Für die normale (Skalar)Multiplikation wird in der Mathematik i.d.R. ein Punkt oder gar kein Zeichen verwendet, während bei der Matrizenmultiplikation oft ein kleines "x" verwendet wird. Ich hatte nun gedacht, dass das Produktkettenzeichen Pi nur für (Skalar)Multiplikationen verwendet wird. Aber das ist nicht so?

Consuli
Irmgard.
Antworten