複雑なデータを使用した分析、何か違うものはありますか?


31

たとえば、線形モデルを実行しているが、データが複雑であるとします。y

y=xβ+ϵ

すべての数値は形式であるため、データセットは複雑です。そのようなデータを操作する際に手順的に異なるものはありますか?y(a+bi

複雑な共分散行列を取得し、複雑な値の統計をテストすることになるためです。

最小二乗を行うときに、転置ではなく共役転置を使用する必要がありますか?複素数値共分散は意味がありますか?


3
複素数を2つの別個の変数と見なし、そのようにしてすべての方程式からiを削除します。さもなければ悪夢になります
...-sashkello

または情報はありますか?βxβ
スティン

3
@Sashkello何が「悪夢」?複素数を使用すると、次元が半分になりますしたがって、おそらくそれは単純化です。さらに、2変量 DVを変量 DVに変換しました。これは大きな利点です。PeterRabbit:はい、共役転置が必要です。複素共分散行列はエルミート正定です。実際の対応物と同様に、それはまだ正の実固有値を持ち、意味の問題に対処します。
whuber

2
@whuber問題が示されているとおりであれば、複素数になることはまったく意味がありません。複素数を扱うのは簡単ではありません-そうでなければ、ここではまったく質問はありません。複素数ではすべてがうまく機能するとは限らず、何をしているのかわからなければ簡単な変更ではありません。この問題を実空間で変換することは同等であり、複雑な空間で機能するかどうかを心配することなく、さまざまな統計手法をすべて適用できます。
サシュケロ

1
@whuber良い答えと素晴らしい説明。ある変換から別の変換への変換が終わったらすぐにそれは本当に難しくないと
思い

回答:


40

概要

複素数値変数への最小二乗回帰の一般化は簡単であり、通常、通常の行列式で行列転置を共役転置に置き換えることから成ります。 ただし、複雑な値の回帰は、標準(実変数)メソッドを使用して解を得るのがはるかに難しい複雑な多変量多重回帰に対応します。したがって、複素数値モデルに意味がある場合は、複素数演算を使用して解を得ることが強く推奨されます。この回答には、データを表示し、近似の診断プロットを表示するいくつかの推奨方法も含まれています。


簡単にするために、通常の(単変量)回帰の場合について説明しましょう。

zj=β0+β1wj+εj

独立変数と、従来の従属変数Zに名前を付ける自由を取りました(たとえば、Lars Ahlfors、Complex Analysisを参照)。以下のすべては、重回帰設定に拡張するのは簡単です。WZ

解釈

このモデルは、簡単に可視化、幾何学的な解釈があります乗算なり再スケールwはJの弾性率β 1回転の引数で原点を中心にβ 1。その後、追加β 0は、この量によって、結果を変換します。効果ε jは、「ジッター」という訳に少しです。したがって、回帰Z JW jは、このようにすると、2次元点の集合を理解するための努力であるZ jでβ1 wjβ1β1β0εjzjwjzjこのような変換を介した2Dポイントのコンスタレーションから生じるため、プロセスのエラーが発生します。これを「変換としてフィット」というタイトルの図で以下に示します。wj

再スケーリングと回転は、プレーンの単なる線形変換ではないことに注意してください。たとえば、スキュー変換は除外されます。したがって、このモデルは、4つのパラメーターを持つ2変量の重回帰とは異なります。

通常の最小二乗

複雑なケースと実際のケースを接続するには、次のように書きます。

従属変数の値に対してz j = x j + i y jzj=バツj+yj

独立変数の値の場合、 w j = u j + i v jwj=あなたはj+vj

さらに、パラメータの書き込み

及び β 1 = γ 1 + I δ 1β0=γ0+iδ0β1=γ1+iδ1

すべて導入された新しい用語の一つは、もちろん、本当である、と仮想の中のあるJ = 1 2 ... n個のインデックスデータ。i2=1j=1,2,,n

OLSの発見は、β 0及びβ 1、偏差の二乗和を最小化しますβ^0β^1

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

形式的に、これは通常のマトリックス製剤と同一である:それを比較 私たちが見つける唯一の違いは、デザイン行列の転置ということであるXは、"によって置き換えられる共役転置X * = ˉ X "。したがって、正式な行列解は(zXβ)(zXβ).X X=X¯

β^=(XX)1Xz.

同時に、これを純粋に実変数の問題にキャストすることで何が達成できるかを確認するために、実コンポーネントに関してOLS目標を書き出すことができます。

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

明らかにこれは、二つ表す連結実際の退縮を:そのうちの一つは、退行上のU及びV、他の退行のY上のU及びVを、我々はそれを必要とするのVの係数xが負であるのUの係数YおよびUのための係数X等しくVのための係数をY。また、合計xuvyuvvxuyuxvy2つの回帰からの残差の二乗を最小化する必要がありますが、通常、係数セットのいずれかがまたはyのみに対して最適な推定値を与えることはありません。これは、2つの実際の回帰を個別に実行し、それらの解を複素回帰と比較する以下の例で確認されます。xy

この分析により、実際の部分に関して複雑な回帰を書き直すと、(1)式が複雑になり、(2)単純な幾何学的解釈があいまいになり、(3)変数間の非自明な相関を伴う一般化された多変量多重回帰が必要になることが明らかになります)解決する。もっとうまくやれる

例として、複素平面の原点近くの積分点で値のグリッドを使用します。変換された値にW β変量ガウス分布を有するIIDエラーが追加される。特に、エラーの実部と虚部が独立していません。wwβ

4次元の点で構成されるため、複雑な変数のの通常の散布図を描くことは困難です。代わりに、実部と虚部の散布図マトリックスを表示できます。(wj,zj)

散布図行列

今は適合を無視して、上の4行と左の4列を見てください。これらはデータを表示します。の円形グリッドは左上にはっきりと現れています。それは持っている81点。zの成分に対するwの成分の散布図は、明確な相関を示しています。それらのうち3つは負の相関があります。唯一Y(の虚部Z)及びU(の実数部Wが)正に相関しています。w81wzyzuw

これらのデータのために、真の値ある- 20 + 5 I - 3 / 4 + 3 / 4 β。これは、3/2の拡張と120度の反時計回りの回転に続いて、左に20ユニット、上に5ユニットの移動を表します。比較のために、xjyjの複素最小二乗解と2つのOLS解を個別に計算します。(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

常に、実数のみの切片が複素数切片の実数部と一致し、虚数のみの切片が複素数切片の虚数部と一致する場合があります。ただし、実数のみの勾配と虚数のみの勾配は、予測どおり正確に複素勾配係数と相互に一致しないことは明らかです。

複雑な適合の結果を詳しく見てみましょう。まず、残差のプロットは、2変量ガウス分布の指標を提供します。(基礎となる分布の周辺標準偏差はで、相関は0.8です。)次に、残差の大きさ(円形シンボルのサイズで表される)とその引数(最初のプロットとまったく同じ色で表される)をプロットできます。適合値に対して:このプロットは、サイズと色のランダムな分布のように見えるはずです。20.8

残差プロット

最後に、いくつかの方法で適合を表すことができます。散布図は、散布図行列(qv)の最後の行と列に表示され、この点を詳しく見る価値があります。以下の左側では、近似は開いた青い円としてプロットされ、矢印(残差を表す)はそれらをデータに接続します(実線の赤い円として表示)。右側には、引数に対応する色で塗りつぶされた開いた黒い円として表示されます。これらは、矢印によってz j)の対応する値に接続されます。各矢印によって膨張表すことを想起されたい3 / 2原点の周りを回転することにより120(wj)(zj)3/2120度、および翻訳によってに加え、その二変量ガウス誤差。(20,5)

変換としてフィット

これらの結果、プロット、および診断プロットはすべて、複素回帰式が正しく機能し、変数の実部と虚部の個別の線形回帰とは異なる何かを達成することを示唆しています。

コード

Rデータ、フィット、およびプロットを作成するコードを以下に示します。実際の溶液ことに留意されたいβは、コードの一行で得られます。通常の最小二乗出力、適合度の分散共分散行列、標準誤差、p値などを取得するには、追加作業が必要になりますが、それほど多くは必要ありません。β^

#
# 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)

私は推定器についての質問のフォローアップ、持っていたβおよびその共分散を。複素数yで問題を解くと、推定器の共分散行列(近似残差を使用して推定)には実数部と虚数部があります。これがどのように機能するのかわかりません。共分散の虚数部は、推定器の虚数部に関するものですか(実数部と同じ)?CIをプロットしたい場合、これをどのように実行したらよいかわかりません...推定量の虚数部と実部は同じCIを持っていますか?あなたの説明にこれに関する少しの情報を含めることは可能でしょうか?ありがとうございました!β^y
-bill_e

すべてが正しく計算された場合、共分散は依然として正定値です。特に、これを使用して変数の実部または虚部の共分散を計算すると、正の数が得られるため、すべてのCIが明確に定義されます。
whuber

Cov行列は正の半正定行列ですが、私が混乱しているのは、「変数の実部または虚部の共分散を計算するためにそれを使用するとき」ということです。私は、CIを計算することになるとき、それはの要素の実部とIMAG部分に対応する実部およびIMAG一部であろうと仮定βを。しかし、これは事実ではないようです。これがなぜなのか知っていますか?β^
-bill_e

また、テスト統計の値を計算すると、たとえば3 + .1 * iのような数値が得られます。このため、私はその数に虚数部がないことを期待していました。これは正常ですか?それとも私が何か間違ったことをしているサイン?
-bill_e

複素数でテスト統計を計算するとき、複雑な結果が得られることを期待する必要があります!統計が実数であるはずの数学的な理由がある場合、計算は間違っているに違いありません。虚数部が実部に比べて本当に小さい場合、浮動小数点エラーが蓄積されている可能性が高いため、通常はそれを無効にします(zapsmallin R)。そうでなければ、それは何かが根本的に間違っているサインです。
whuber

5

素敵な長いGoogleの検索の後、別の方法で問題を理解するための関連情報を見つけました。同様の問題は、統計的信号処理ではやや一般的であることが判明しています。実データの線形最小二乗に対応するガウス尤度で開始する代わりに、次のように開始します。

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

このウィキペディアのページは、このオブジェクトに関する満足のいく要約を提供します。

具体的には、あなたの推定の分布と仮定できるならばβは、その後、複雑な通常を使用する複雑なデータ1の場合には、multivarガウスです。この推定量の共分散の計算は少し異なり、wikiページに記載されています。 β^

whuberと同じ結論に達するが、最尤法などの他の推定量を調査する別の情報源は、Yan et al。の「不適切な線形回帰モデルの推定」です。


1

@whuberには美しく説明された説明のある答えがありますが、複雑な空間の力の一部を逃した単純化されたモデルだと思います。

実数の線形最小二乗回帰は、入力、パラメーターβ、およびターゲットxを使用した次のモデルと同等です。wβx

z=β0+β1w+ϵ

ここで、は通常、ゼロ平均といくつかの(通常は一定の)分散で分布しています。ϵ

複雑な線形回帰を次のように定義することをお勧めします。

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

2つの大きな違いがあります。

まず、追加の自由度がある位相感度が可能になります。あなたはそれを望まないかもしれませんが、あなたはそれを簡単に持つことができます。β2

第二に、は平均がゼロで、いくらかの分散と「疑似分散」を持つ複雑な正規分布です。ϵ

実際のモデルに戻ると、負の対数尤度である損失を最小化する通常の最小二乗解が出てきます。正規分布の場合、これは放物線です。

y=ax2+cx+d.

x=z(β0+β1w)acd

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

cdabb

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

これは、複雑な正規分布の密度の画像です。

複素単変量正規分布の密度

b

これは回帰を複雑にしますが、ソリューションはまだ分析的であると確信しています。私は1つの入力の場合にそれを解決し、ここで自分の解決策を書きたいと思っていますが、whuberが一般的な場合を解決するかもしれないと感じています。


この貢献に感謝します。ただし、(a)二次多項式を導入する理由、(b)「対応する」多項式が実際に意味するもの、または(c)適合している統計モデルがわからないため、私は従いません。それらについて詳しく説明していただけますか?
whuber

@whuber統計モデルとして書き直しました。理にかなっていることを教えてください。
ニールG

zww¯ϵ

\Beta2

|x|2x2

1

この問題はMathematica StackExchangeで再び取り上げられました。私の答え/拡張コメントでは、@ whuberの優れた答えに従うべきであるというものがあります。

ここでの私の答えは、エラー構造をもう少し明示的にすることで、@ whuberの答えを少しだけ拡張する試みです。提案された最小二乗推定器は、二変量誤差分布が実数成分と虚数成分との間にゼロ相関がある場合に使用するものです。(ただし、生成されたデータの誤差相関は0.8です。)

ρ=0ρ0

データと最小二乗推定器

ρ=0

rhoがゼロであると仮定した最尤推定

ρ=0

ρ

ローを含む最尤推定

γ0δ0ργ1

これすべての私のポイントは、フィットするモデルを完全に明示的にする必要があり、シンボリック代数プログラムが乱雑さを軽減するのに役立つことです。(そして、もちろん、最尤推定量は、最小二乗推定量が仮定しない二変量正規分布を仮定します。)

付録:完全なMathematicaコード

(* 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}} *)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.