Analyse mit komplexen Daten, etwas anderes?


31

Angenommen, Sie erstellen ein lineares Modell, aber die Daten sind komplex.y

y=xβ+ϵ

Mein Datensatz ist komplex, da alle Zahlen in die Form . Gibt es verfahrenstechnische Unterschiede bei der Arbeit mit solchen Daten?y(a+bi)

Ich frage, weil Sie am Ende komplexe Kovarianzmatrizen und Teststatistiken mit komplexen Werten erhalten.

Müssen Sie konjugierte Transponierten anstelle von Transponierten verwenden, wenn Sie kleinste Quadrate machen? ist eine komplexe bewertete Kovarianz sinnvoll?


3
Betrachten Sie komplexe Zahlen als zwei separate Variablen und entfernen Sie auf diese Weise i aus all Ihren Gleichungen. Sonst wird es ein Albtraum ...
Sashkello

Irgendwelche Informationen zu oder ? βxβ
Stijn

3
@Sashkello Was für ein "Albtraum"? Wenn Sie komplexe Zahlen verwenden, halbieren sich die Dimensionen. Dies ist also möglicherweise eine Vereinfachung. Außerdem haben Sie einen bivariaten DV in einen univariaten DV verwandelt , was ein großer Vorteil ist. PeterRabbit: Ja, es werden konjugierte Transponierungen benötigt. Die komplexe Kovarianzmatrix ist hermitisch positiv-definit. Wie sein reales Gegenstück hat es immer noch positive reale Eigenwerte, die sich mit der Frage nach der Sinnhaftigkeit befassen.
Whuber

2
@whuber Es macht für mich überhaupt keinen Sinn, auf komplexe Zahlen einzugehen, wenn das Problem wie gezeigt ist. Es ist nicht einfacher, mit komplexen Zahlen umzugehen - sonst würde es hier überhaupt keine Frage geben. Bei komplexen Zahlen funktioniert nicht alles und es ist keine einfache Änderung, wenn Sie nicht wissen, was Sie tun. Die Transformation dieses Problems im realen Raum ist äquivalent , und Sie können alle möglichen statistischen Techniken anwenden, ohne sich darum zu kümmern, ob es im komplexen Raum funktioniert oder nicht.
Sashkello

1
@whuber Gute Antwort und nette Erklärung. Ich würde sagen, sobald Sie über die Transformation von einem zum anderen kommen, ist es wirklich nicht schwer ...
Sashkello

Antworten:


40

Zusammenfassung

Die Verallgemeinerung der Regression der kleinsten Quadrate auf Variablen mit komplexem Wert ist einfach und besteht hauptsächlich darin, Matrixtransponierten durch konjugierte Transponierten in den üblichen Matrixformeln zu ersetzen. Eine komplexwertige Regression entspricht jedoch einer komplizierten multivariaten multiplen Regression, deren Lösung unter Verwendung von Standardmethoden (reelle Variablen) sehr viel schwieriger zu erhalten wäre. Wenn das komplexwertige Modell aussagekräftig ist, wird daher dringend empfohlen, komplexe Arithmetik zu verwenden, um eine Lösung zu erhalten. Diese Antwort enthält auch einige Vorschläge zur Anzeige der Daten und zur Darstellung der Diagnosediagramme der Anpassung.


Erläutern wir der Einfachheit halber den Fall einer gewöhnlichen (univariaten) Regression, die geschrieben werden kann

zj=β0+β1wj+εj.

Ich habe mir erlaubt, die unabhängige Variable und die abhängige Variable benennen , was konventionell ist (siehe zum Beispiel Lars Ahlfors, Complex Analysis ). Alles, was folgt, ist einfach auf die Einstellung der multiplen Regression zu erweitern.ZWZ

Deutung

Dieses Modell verfügt über eine leicht visualisiert geometrische Interpretation: Multiplikation mit wird rescale durch das Modul von und dreht es um den Ursprung durch das Argument von . Anschließend übersetzt das Hinzufügen von das Ergebnis um diesen Betrag. bewirkt, dass die Übersetzung ein wenig "zittert". Das Regressionieren von auf auf diese Weise ist daher ein Versuch, die Sammlung von 2D-Punkten zu verstehen, die sich aus einer Konstellation von 2D-Punktenw j β 1 β 1 β 0 ε j z j w j ( z j ) ( w j )β1 wjβ1β1β0εjzjwj(zj)(wj)über eine solche Transformation, wobei ein Fehler in dem Prozess berücksichtigt wird. Dies wird unten mit der Abbildung mit dem Titel "Fit as a Transformation" veranschaulicht.

Beachten Sie, dass die Neuskalierung und Drehung nicht nur eine lineare Transformation der Ebene sind, sondern zum Beispiel Schräglauftransformationen ausschließen. Daher ist dieses Modell nicht dasselbe wie eine bivariate multiple Regression mit vier Parametern.

Ordentliche kleinste Quadrate

Um den komplexen Fall mit dem realen Fall zu verbinden, schreiben wir

zj=xj+iyj für die Werte der abhängigen Variablen und

wj=uj+ivj für die Werte der unabhängigen Variablen.

Weiterhin für die Parameter schreiben

β 1 = γ 1 + i δ 1β0=γ0+iδ0 und . β1=γ1+iδ1

Jeder der neu eingeführten Begriffe ist natürlich real, und ist imaginär, während die Daten indiziert.j = 1 , 2 , ... , ni2=1j=1,2,,n

OLS findet und , die die Summe der Abweichungsquadrate minimieren. β 1β^0β^1

j=1n||zj(β^0+β^1wj)||2=j=1n(z¯j(β^0¯+β^1¯w¯j))(zj(β^0+β^1wj)).

Formal ist dies identisch mit der üblichen Matrixformulierung: Vergleichen Sie es mit Der einzige Unterschied besteht darin, dass die Transponierte der Entwurfsmatrix durch die konjugierte Transponierte . Folglich ist die formale MatrixlösungX ' X = ˉ X '(zXβ)(zXβ).X X=X¯

β^=(XX)1Xz.

Gleichzeitig können wir das OLS-Ziel in Bezug auf die realen Komponenten aufschreiben, um zu sehen, was erreicht werden kann, wenn dies in ein rein variables Problem umgewandelt wird:

j=1n(xjγ0γ1uj+δ1vj)2+j=1n(yjδ0δ1ujγ1vj)2.

Offensichtlich stellt dies zwei miteinander verknüpfte reale Regressionen dar: Eine von ihnen regressiert auf und , die andere regressiert auf und ; und wir fordern, dass der Koeffizient für das Negative des Koeffizienten für und der Koeffizient für gleich dem Koeffizienten für . Darüber hinaus, weil die Summeu v y u v v x u y u x v y x yxuvyuvvxuyuxvyQuadrate von Residuen aus den zwei Regressionen sollen minimiert werden, es wird normalerweise nicht der Fall sein, dass einer der Koeffizientensätze die beste Schätzung für oder alleine ergibt . Dies wird im folgenden Beispiel bestätigt, in dem die beiden reellen Regressionen separat ausgeführt und ihre Lösungen mit der komplexen Regression verglichen werden.xy

Diese Analyse macht deutlich, dass das Umschreiben der komplexen Regression in Bezug auf die Realteile (1) die Formeln kompliziert, (2) die einfache geometrische Interpretation verdeckt und (3) eine verallgemeinerte multivariate multiple Regression (mit nichttrivialen Korrelationen zwischen den Variablen) erfordern würde ) lösen. Wir können es besser machen.

Beispiel

Als Beispiel nehme ich ein Gitter von Werten an ganzzahligen Punkten in der Nähe des Ursprungs in der komplexen Ebene. Zu den transformierten Werten werden Fehler mit einer bivariaten Gaußschen Verteilung addiert: Insbesondere sind der Real- und der Imaginärteil der Fehler nicht unabhängig.w βwwβ

Es ist schwierig, das übliche Streudiagramm von für komplexe Variablen zu zeichnen , da es aus Punkten in vier Dimensionen bestehen würde. Stattdessen können wir die Streudiagramm-Matrix ihrer Real- und Imaginärteile anzeigen.(wj,zj)

Streudiagramm-Matrix

Ignorieren Sie die Anpassung für den Moment und sehen Sie sich die oberen vier Zeilen und vier linken Spalten an: Diese zeigen die Daten an. Das kreisförmige Gitter von ist oben links zu sehen; es hat Punkte. Die Streudiagramme der Komponenten von gegen die Komponenten von zeigen klare Korrelationen. Drei von ihnen haben negative Korrelationen; nur das (der Imaginärteil von ) und (der Realteil von ) sind positiv korreliert.81 w z y z u ww81wzyzuw

Für diese Daten, der wahre Wert von ist . Es stellt eine Erweiterung um und eine Drehung um 120 Grad gegen den Uhrzeigersinn dar, gefolgt von einer Verschiebung von Einheiten nach links und Einheiten nach oben. Ich berechne drei Anpassungen: die komplexe Lösung der kleinsten Quadrate und zwei OLS-Lösungen für und getrennt zum Vergleich.( - 20 + 5 i , - 3 / 4 + 3 / 4 β3/2205(xj)(yj)(20+5i,3/4+3/43i)3/2205(xj)(yj)

Fit            Intercept          Slope(s)
True           -20    + 5 i       -0.75 + 1.30 i
Complex        -20.02 + 5.01 i    -0.83 + 1.38 i
Real only      -20.02             -0.75, -1.46
Imaginary only          5.01       1.30, -0.92

Es wird immer der Fall sein, dass der Real-Only-Abschnitt mit dem Realteil des komplexen Abschnitts übereinstimmt und der Imaginary-Only-Abschnitt mit dem Imaginary-Teil des komplexen Abschnitts übereinstimmt. Es ist jedoch offensichtlich, dass die reellen und imaginären Steigungen weder mit den komplexen Steigungskoeffizienten noch untereinander genau wie vorhergesagt übereinstimmen.

Schauen wir uns die Ergebnisse der komplexen Anpassung genauer an. Zunächst gibt eine Darstellung der Residuen einen Hinweis auf ihre bivariate Gaußsche Verteilung. (Die zugrunde liegende Verteilung hat marginale Standardabweichungen von und eine Korrelation von .) Dann können wir die Größen der Residuen (dargestellt durch die Größe der Kreissymbole) und ihre Argumente (dargestellt durch Farben genau wie im ersten Diagramm) darstellen. gegen die angepassten Werte: Dieses Diagramm sollte wie eine zufällige Verteilung von Größen und Farben aussehen, die es tut.0,820.8

Restgrundstück

Schließlich können wir die Anpassung auf verschiedene Arten darstellen. Die Anpassung erschien in den letzten Zeilen und Spalten der Streudiagramm-Matrix ( vgl. ) Und ist möglicherweise einen genaueren Blick auf diesen Punkt wert. Unten links sind die Anpassungen als offene blaue Kreise dargestellt, und Pfeile (die die Residuen darstellen) verbinden sie mit den Daten, die als durchgezogene rote Kreise dargestellt sind. Rechts werden die als offene schwarze Kreise dargestellt, die mit Farben gefüllt sind, die ihren Argumenten entsprechen. Diese sind durch Pfeile mit den entsprechenden Werten von . Denken Sie daran, dass jeder Pfeil eine Erweiterung um um den Ursprung, eine Drehung um Grad und eine Übersetzung um sowie diesen bivariaten Guassianischen Fehler darstellt.( z j ) 3 / 2 120 ( - 20 , 5 )(wj)(zj)3/2120(20,5)

Fit als Verwandlung

Diese Ergebnisse, die Diagramme und die diagnostischen Diagramme deuten darauf hin, dass die komplexe Regressionsformel korrekt funktioniert und etwas anderes erreicht als separate lineare Regressionen des Real- und Imaginärteils der Variablen.

Code

Der RCode zum Erstellen der Daten, Anpassungen und Diagramme wird unten angezeigt. Beachten Sie, dass die eigentliche Lösung von in einer einzigen Codezeile erhalten wird. Zusätzliche Arbeit - aber nicht zu viel davon - wäre erforderlich, um die übliche Ausgabe der kleinsten Quadrate zu erhalten: die Varianz-Kovarianz-Matrix der Anpassung, Standardfehler, p-Werte usw.β^

#
# Synthesize data.
# (1) the independent variable `w`.
#
w.max <- 5 # Max extent of the independent values
w <- expand.grid(seq(-w.max,w.max), seq(-w.max,w.max))
w <- complex(real=w[[1]], imaginary=w[[2]])
w <- w[Mod(w) <= w.max]
n <- length(w)
#
# (2) the dependent variable `z`.
#
beta <- c(-20+5i, complex(argument=2*pi/3, modulus=3/2))
sigma <- 2; rho <- 0.8 # Parameters of the error distribution
library(MASS) #mvrnorm
set.seed(17)
e <- mvrnorm(n, c(0,0), matrix(c(1,rho,rho,1)*sigma^2, 2))
e <- complex(real=e[,1], imaginary=e[,2])
z <- as.vector((X <- cbind(rep(1,n), w)) %*% beta + e)
#
# Fit the models.
#
print(beta, digits=3)
print(beta.hat <- solve(Conj(t(X)) %*% X, Conj(t(X)) %*% z), digits=3)
print(beta.r <- coef(lm(Re(z) ~ Re(w) + Im(w))), digits=3)
print(beta.i <- coef(lm(Im(z) ~ Re(w) + Im(w))), digits=3)
#
# Show some diagnostics.
#
par(mfrow=c(1,2))
res <- as.vector(z - X %*% beta.hat)
fit <- z - res
s <- sqrt(Re(mean(Conj(res)*res)))
col <- hsv((Arg(res)/pi + 1)/2, .8, .9)
size <- Mod(res) / s
plot(res, pch=16, cex=size, col=col, main="Residuals")
plot(Re(fit), Im(fit), pch=16, cex = size, col=col,
     main="Residuals vs. Fitted")

plot(Re(c(z, fit)), Im(c(z, fit)), type="n",
     main="Residuals as Fit --> Data", xlab="Real", ylab="Imaginary")
points(Re(fit), Im(fit), col="Blue")
points(Re(z), Im(z), pch=16, col="Red")
arrows(Re(fit), Im(fit), Re(z), Im(z), col="Gray", length=0.1)

col.w <-  hsv((Arg(w)/pi + 1)/2, .8, .9)
plot(Re(c(w, z)), Im(c(w, z)), type="n",
     main="Fit as a Transformation", xlab="Real", ylab="Imaginary")
points(Re(w), Im(w), pch=16, col=col.w)
points(Re(w), Im(w))
points(Re(z), Im(z), pch=16, col=col.w)
arrows(Re(w), Im(w), Re(z), Im(z), col="#00000030", length=0.1)
#
# Display the data.
#
par(mfrow=c(1,1))
pairs(cbind(w.Re=Re(w), w.Im=Im(w), z.Re=Re(z), z.Im=Im(z),
            fit.Re=Re(fit), fit.Im=Im(fit)), cex=1/2)

Ich hatte eine Folgefrage zum Schätzer und seiner Kovarianz. Wenn ich mein Problem mit komplexem löse , besteht die Kovarianzmatrix (die ich anhand des Fit-Residuums schätze) meines Schätzers aus Real- und Imaginärteilen. Ich bin mir nicht sicher, wie das funktioniert. Betrifft der Imaginärteil der Kovarianz nur den Imaginärteil des Schätzers (gleiches gilt für den Realteil)? Wenn ich CIs zeichnen möchte, bin ich mir nicht sicher, wie ich vorgehen soll ... Haben die imaginären und realen Teile des Schätzers den gleichen CI? Wäre es möglich, ein paar Informationen dazu in Ihre Erklärung aufzunehmen? Vielen Dank! β^y
bill_e

Wenn alles korrekt berechnet wurde, ist die Kovarianz immer noch positiv bestimmt. Dies bedeutet insbesondere, dass Sie beim Berechnen der Kovarianz des Realteils oder des Imaginärteils einer Variablen eine positive Zahl erhalten, sodass alle CIs genau definiert sind.
whuber

Die Cov-Matrix ist positiv, aber ich vermute, ich bin verwirrt, wenn Sie sagen: "Wenn Sie sie verwenden, um die Kovarianz entweder des Realteils oder des Imaginärteils einer Variablen zu berechnen". Ich nahm an, dass ein CI bei der Berechnung einen Real- und einen Imageteil haben würde, der dem Real- und Imageteil eines Elements von . Dies scheint jedoch nicht der Fall zu sein. Weißt du warum das so ist? β^
bill_e

Wenn ich Werte für Teststatistiken berechne, erhalte ich auch Zahlen wie 3 + .1 * i. Dafür hatte ich erwartet, dass die Zahl keinen Imaginärteil hat. Ist das normal? Oder ein Zeichen, dass ich etwas falsch mache?
bill_e

Wenn Sie Teststatistiken mit komplexen Zahlen berechnen, sollten Sie mit komplexen Ergebnissen rechnen! Wenn Sie einen mathematischen Grund haben, warum die Statistik real sein sollte, muss die Berechnung fehlerhaft sein. Wenn der Imaginärteil im Vergleich zum Realteil sehr klein ist, ist dies wahrscheinlich ein akkumulierter Gleitkommafehler und es ist normalerweise sicher, ihn abzutöten ( zapsmallin R). Ansonsten ist es ein Zeichen, dass etwas grundlegend falsch ist.
Whuber

5

Nach einem schönen langen Google Sesh fand ich einige relevante Informationen zum Verständnis des Problems auf eine alternative Art und Weise. Es stellt sich heraus, dass ähnliche Probleme bei der statistischen Signalverarbeitung häufig auftreten. Anstatt mit einer Gaußschen Wahrscheinlichkeit zu beginnen, die einem linearen kleinsten Quadrat für reale Daten entspricht, beginnt man mit:

http://en.wikipedia.org/wiki/Complex_normal_distribution

Diese Wikipedia-Seite gibt einen zufriedenstellenden Überblick über dieses Objekt.

Insbesondere, wenn Sie davon ausgehen können, dass die Verteilung Ihres Schätzers multivar gaußsch ist, dann würde man im Fall komplexer Daten die komplexe Normale verwenden. Die Berechnung der Kovarianz dieses Schätzers ist etwas anders und auf der Wiki-Seite angegeben. β^

Eine andere Quelle, die ich gefunden habe und zu derselben Schlussfolgerung gelangt wie whuber, aber andere Schätzer wie die maximale Wahrscheinlichkeit untersucht, ist: "Schätzungen der unzulässigen linearen Regressionsmodelle" von Yan et al.


1

Während @whuber eine schön illustrierte und gut erläuterte Antwort hat, denke ich, dass es ein vereinfachtes Modell ist, das einen Teil der Kraft des komplexen Raums vermisst.

Die lineare Regression der kleinsten Quadrate auf Real entspricht dem folgenden Modell mit Eingaben , Parametern und Ziel :wβx

z=β0+β1w+ϵ

wobei normalverteilt ist mit einem Mittelwert von Null und einer gewissen (typischerweise konstanten) Varianz.ϵ

Ich schlage vor, die komplexe lineare Regression wie folgt zu definieren:

z=β0+β1w+β2w¯+ϵ

Es gibt zwei Hauptunterschiede.

Erstens gibt es einen zusätzlichen Freiheitsgrad , der die ermöglicht. Das möchten Sie vielleicht nicht, aber das können Sie leicht haben.β2

Zweitens ist eine komplexe Normalverteilung mit einem Mittelwert von Null und einer gewissen Varianz und "Pseudovarianz".ϵ

Zurück zum realen Modell: Die gewöhnliche Lösung der kleinsten Quadrate minimiert den Verlust, der die negative log-Wahrscheinlichkeit darstellt. Für eine Normalverteilung ist dies die Parabel:

y=ax2+cx+d.

Dabei ist , (normalerweise) festgelegt, ist gemäß dem Modell Null und spielt keine Rolle, da Verlustfunktionen bei ständiger Addition unveränderlich sind.x=z(β0+β1w)acd

Zurück zum komplexen Modell ist die negative log-Wahrscheinlichkeit

y=a|x|2+(bx2+cx)+d.

c und sind wie zuvor Null. ist die Krümmung und ist die "Pseudo-Krümmung". erfasst anisotrope Komponenten. Wenn Sie die Funktion stört, lautet die entsprechende Schreibweise für einen anderen Parametersatz . Hier ist die Varianz und ist die Pseudovarianz. ist nach unserem Modell Null.dabb

[xμxμ¯]H[suu¯s¯]1[xμxμ¯]+d
s,u,μ,dsuμ

Hier ist ein Bild der Dichte einer komplexen Normalverteilung:

Die Dichte einer komplexen univariaten Normalverteilung

Beachten Sie, wie asymmetrisch es ist. Ohne den Parameter kann es nicht asymmetrisch sein.b

Dies erschwert die Regression, obwohl ich mir ziemlich sicher bin, dass die Lösung noch analytisch ist. Ich habe es für den Fall einer Eingabe gelöst, und ich bin glücklich, meine Lösung hier zu transkribieren, aber ich habe das Gefühl, dass whuber den allgemeinen Fall lösen könnte.


Vielen Dank für diesen Beitrag. Ich verfolge es jedoch nicht, weil ich nicht sicher bin, (a) warum Sie ein quadratisches Polynom einführen, (b) was Sie eigentlich mit "entsprechendem" Polynom meinen oder (c) welches statistische Modell Sie anpassen. Könnten Sie diese näher erläutern?
Whuber

@whuber Ich habe es als statistisches Modell umgeschrieben. Bitte lassen Sie mich wissen, ob es für Sie sinnvoll ist.
Neil G

Danke: Das klärt auf (+1). Ihr Modell ist keine analytische Funktion der Variablen mehr. Da es sich jedoch um eine analytische Funktion der Parameter handelt, kann sie als multiple Regression von gegen die beiden komplexen Variablen und aufgefasst werden . Außerdem ermöglichen Sie eine flexiblere Verteilung: Dies ist in meiner Lösung nicht enthalten. Soweit ich das beurteilen kann, ist Ihre Lösung gleichbedeutend damit, alles in seine Real- und Imaginärteile umzuwandeln und eine multivariate multiple Realregression durchzuführen. w ˉ w ϵzww¯ϵ
Whuber

@whuber Richtig, mit den zwei Änderungen, die ich vorgeschlagen habe, denke ich, dass es, wie Sie sagten, eine multivariate echte Regression ist. kann entfernt werden, um die in Ihrer Lösung beschriebene Umwandlung . Der Pseudo-Krümmungsterm hat jedoch einige realistische praktische Anwendungen, z. B. den Versuch, eine Regression durchzuführen, um eine Wechselspannung mit einem Grundzustand ungleich Null vorherzusagen. \Beta2
Neil G

In Bezug auf die analytische Funktion ist deine weder analytisch, weil dein Verlust das Paraboloid , das nicht analytisch ist. Der Sattel ist analytisch, kann jedoch nicht minimiert werden, da er divergiert. x 2|x|2x2
Neil G

1

Dieses Problem hat kommen wieder auf den Mathematica Stack und meine Antwort / erweitert Kommentar ist , dass @whuber ‚s ausgezeichnete Antwort zu beachten.

Meine Antwort hier ist ein Versuch, die Antwort von @whuber ein wenig zu erweitern, indem die Fehlerstruktur etwas expliziter gestaltet wird. Der vorgeschlagene Schätzer der kleinsten Quadrate ist das, was man verwenden würde, wenn die bivariate Fehlerverteilung eine Nullkorrelation zwischen der realen und der imaginären Komponente aufweist. (Die generierten Daten weisen jedoch eine Fehlerkorrelation von 0,8 auf.)

ρ=0ρ0

Schätzer für Daten und kleinste Quadrate

ρ=0

Maximalwahrscheinlichkeitsschätzungen unter der Annahme, dass rho Null ist

ρ=0

ρ

Maximum-Likelihood-Schätzungen einschließlich Rho

γ0δ0ργ1

Mein Punkt dabei ist, dass das Modell, das angepasst werden soll, vollständig explizit dargestellt werden muss und dass symbolische Algebra-Programme dazu beitragen können, die Unordnung zu lindern. (Und natürlich nehmen die Maximum-Likelihood-Schätzer eine bivariate Normalverteilung an, die die Schätzer der kleinsten Quadrate nicht annehmen.)

Anhang: Der vollständige Mathematica- Code

(* Predictor variable *)
w = {0 - 5 I, -3 - 4 I, -2 - 4 I, -1 - 4 I, 0 - 4 I, 1 - 4 I, 2 - 4 I,
    3 - 4 I, -4 - 3 I, -3 - 3 I, -2 - 3 I, -1 - 3 I, 0 - 3 I, 1 - 3 I,
    2 - 3 I, 3 - 3 I, 4 - 3 I, -4 - 2 I, -3 - 2 I, -2 - 2 I, -1 - 2 I,
    0 - 2 I, 1 - 2 I, 2 - 2 I, 3 - 2 I, 
   4 - 2 I, -4 - 1 I, -3 - 1 I, -2 - 1 I, -1 - 1 I, 0 - 1 I, 1 - 1 I, 
   2 - 1 I, 3 - 1 I, 
   4 - 1 I, -5 + 0 I, -4 + 0 I, -3 + 0 I, -2 + 0 I, -1 + 0 I, 0 + 0 I,
    1 + 0 I, 2 + 0 I, 3 + 0 I, 4 + 0 I, 
   5 + 0 I, -4 + 1 I, -3 + 1 I, -2 + 1 I, -1 + 1 I, 0 + 1 I, 1 + 1 I, 
   2 + 1 I, 3 + 1 I, 4 + 1 I, -4 + 2 I, -3 + 2 I, -2 + 2 I, -1 + 2 I, 
   0 + 2 I, 1 + 2 I, 2 + 2 I, 3 + 2 I, 
   4 + 2 I, -4 + 3 I, -3 + 3 I, -2 + 3 I, -1 + 3 I, 0 + 3 I, 1 + 3 I, 
   2 + 3 I, 3 + 3 I, 4 + 3 I, -3 + 4 I, -2 + 4 I, -1 + 4 I, 0 + 4 I, 
   1 + 4 I, 2 + 4 I, 3 + 4 I, 0 + 5 I};
(* Add in a "1" for the intercept *)
w1 = Transpose[{ConstantArray[1 + 0 I, Length[w]], w}];

z = {-15.83651 + 7.23001 I, -13.45474 + 4.70158 I, -13.63353 + 
    4.84748 I, -14.79109 + 4.33689 I, -13.63202 + 
    9.75805 I, -16.42506 + 9.54179 I, -14.54613 + 
    12.53215 I, -13.55975 + 14.91680 I, -12.64551 + 
    2.56503 I, -13.55825 + 4.44933 I, -11.28259 + 
    5.81240 I, -14.14497 + 7.18378 I, -13.45621 + 
    9.51873 I, -16.21694 + 8.62619 I, -14.95755 + 
    13.24094 I, -17.74017 + 10.32501 I, -17.23451 + 
    13.75955 I, -14.31768 + 1.82437 I, -13.68003 + 
    3.50632 I, -14.72750 + 5.13178 I, -15.00054 + 
    6.13389 I, -19.85013 + 6.36008 I, -19.79806 + 
    6.70061 I, -14.87031 + 11.41705 I, -21.51244 + 
    9.99690 I, -18.78360 + 14.47913 I, -15.19441 + 
    0.49289 I, -17.26867 + 3.65427 I, -16.34927 + 
    3.75119 I, -18.58678 + 2.38690 I, -20.11586 + 
    2.69634 I, -22.05726 + 6.01176 I, -22.94071 + 
    7.75243 I, -28.01594 + 3.21750 I, -24.60006 + 
    8.46907 I, -16.78006 - 2.66809 I, -18.23789 - 
    1.90286 I, -20.28243 + 0.47875 I, -18.37027 + 
    2.46888 I, -21.29372 + 3.40504 I, -19.80125 + 
    5.76661 I, -21.28269 + 5.57369 I, -22.05546 + 
    7.37060 I, -18.92492 + 10.18391 I, -18.13950 + 
    12.51550 I, -22.34471 + 10.37145 I, -15.05198 + 
    2.45401 I, -19.34279 - 0.23179 I, -17.37708 + 
    1.29222 I, -21.34378 - 0.00729 I, -20.84346 + 
    4.99178 I, -18.01642 + 10.78440 I, -23.08955 + 
    9.22452 I, -23.21163 + 7.69873 I, -26.54236 + 
    8.53687 I, -16.19653 - 0.36781 I, -23.49027 - 
    2.47554 I, -21.39397 - 0.05865 I, -20.02732 + 
    4.10250 I, -18.14814 + 7.36346 I, -23.70820 + 
    5.27508 I, -25.31022 + 4.32939 I, -24.04835 + 
    7.83235 I, -26.43708 + 6.19259 I, -21.58159 - 
    0.96734 I, -21.15339 - 1.06770 I, -21.88608 - 
    1.66252 I, -22.26280 + 4.00421 I, -22.37417 + 
    4.71425 I, -27.54631 + 4.83841 I, -24.39734 + 
    6.47424 I, -30.37850 + 4.07676 I, -30.30331 + 
    5.41201 I, -28.99194 - 8.45105 I, -24.05801 + 
    0.35091 I, -24.43580 - 0.69305 I, -29.71399 - 
    2.71735 I, -26.30489 + 4.93457 I, -27.16450 + 
    2.63608 I, -23.40265 + 8.76427 I, -29.56214 - 2.69087 I};

(* whuber 's least squares estimates *)
{a, b} = Inverse[ConjugateTranspose[w1].w1].ConjugateTranspose[w1].z
(* {-20.0172+5.00968 \[ImaginaryI],-0.830797+1.37827 \[ImaginaryI]} *)

(* Break up into the real and imaginary components *)
x = Re[z];
y = Im[z];
u = Re[w];
v = Im[w];
n = Length[z]; (* Sample size *)

(* Construct the real and imaginary components of the model *)
(* This is the messy part you probably don't want to do too often with paper and pencil *)
model = \[Gamma]0 + I \[Delta]0 + (\[Gamma]1 + I \[Delta]1) (u + I v);
modelR = Table[
   Re[ComplexExpand[model[[j]]]] /. Im[h_] -> 0 /. Re[h_] -> h, {j, n}];
(* \[Gamma]0+u \[Gamma]1-v \[Delta]1 *)
modelI = Table[
   Im[ComplexExpand[model[[j]]]] /. Im[h_] -> 0 /. Re[h_] -> h, {j, n}];
(* v \[Gamma]1+\[Delta]0+u \[Delta]1 *)

(* Construct the log of the likelihood as we are estimating the parameters associated with a bivariate normal distribution *)
logL = LogLikelihood[
   BinormalDistribution[{0, 0}, {\[Sigma]1, \[Sigma]2}, \[Rho]],
   Transpose[{x - modelR, y - modelI}]];

mle0 = FindMaximum[{logL /. {\[Rho] -> 
      0, \[Sigma]1 -> \[Sigma], \[Sigma]2 -> \[Sigma]}, \[Sigma] > 
    0}, {\[Gamma]0, \[Delta]0, \[Gamma]1, \[Delta]1, \[Sigma]}]
(* {-357.626,{\[Gamma]0\[Rule]-20.0172,\[Delta]0\[Rule]5.00968,\[Gamma]1\[Rule]-0.830797,\[Delta]1\[Rule]1.37827,\[Sigma]\[Rule]2.20038}} *)

(* Now suppose we don't want to restrict \[Rho]=0 *)
mle1 = FindMaximum[{logL /. {\[Sigma]1 -> \[Sigma], \[Sigma]2 -> \[Sigma]}, \[Sigma] > 0 && -1 < \[Rho] < 
     1}, {\[Gamma]0, \[Delta]0, \[Gamma]1, \[Delta]1, \[Sigma], \[Rho]}]
(* {-315.313,{\[Gamma]0\[Rule]-20.0172,\[Delta]0\[Rule]5.00968,\[Gamma]1\[Rule]-0.763237,\[Delta]1\[Rule]1.30859,\[Sigma]\[Rule]2.21424,\[Rho]\[Rule]0.810525}} *)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.