Ringkasan
Generalisasi regresi kuadrat-terkecil ke variabel-variabel bernilai kompleks adalah langsung, terutama terdiri dari penggantian transpos matriks dengan konjugat transpos dalam formula matriks biasa. Namun, regresi bernilai kompleks sesuai dengan regresi berganda multivariat yang rumit yang solusinya akan jauh lebih sulit diperoleh dengan menggunakan metode standar (variabel nyata). Dengan demikian, ketika model bernilai kompleks bermakna, menggunakan aritmatika kompleks untuk mendapatkan solusi sangat dianjurkan. Jawaban ini juga mencakup beberapa cara yang disarankan untuk menampilkan data dan menyajikan plot diagnostik kecocokan.
Untuk kesederhanaan, mari kita bahas kasus regresi biasa (univariat), yang dapat ditulis
zj= β0+ β1wj+ εj.
Saya telah mengambil kebebasan menamai variabel independen dan variabel dependen Z , yang konvensional (lihat, misalnya, Lars Ahlfors, Analisis Kompleks ). Semua yang berikut ini mudah untuk memperluas ke pengaturan regresi berganda.WZ
Interpretasi
Model ini memiliki interpretasi geometris dengan mudah divisualisasikan: perkalian dengan akan rescale w j oleh modulus β 1 dan memutar di sekitar asal oleh argumen dari β 1 . Selanjutnya, menambahkan β 0 menerjemahkan hasilnya dengan jumlah ini. Efek dari ε j adalah "jitter" terjemahan yang sedikit. Dengan demikian, kemunduran yang z j pada w j dengan cara ini merupakan upaya untuk memahami koleksi poin 2D ( z j )β1 wjβ1β1β0εjzjwj(zj)seperti yang timbul dari konstelasi poin 2D melalui transformasi tersebut, memungkinkan untuk beberapa kesalahan dalam proses. Ini diilustrasikan di bawah ini dengan gambar berjudul "Fit as a Transformation."(wj)
Perhatikan bahwa pengubahan ukuran dan rotasi bukan sembarang transformasi linear dari bidang: mereka mengesampingkan transformasi miring, misalnya. Dengan demikian model ini tidak sama dengan regresi berganda bivariat dengan empat parameter.
Kotak Terkecil Biasa
Untuk menghubungkan kasing yang kompleks dengan kasing asli, mari menulis
untuk nilai-nilai variabel dependen danzj=xj+iyj
untuk nilai-nilai variabel independen.wj=uj+ivj
Selanjutnya untuk parameter tulis
dan β 1 = γ 1 + i δ 1 . β0=γ0+iδ0β1=γ1+iδ1
Setiap istilah baru yang diperkenalkan, tentu saja, nyata, dan adalah imajiner sementara j = 1 , 2 , … , n mengindeks data.i2=−1j=1,2,…,n
OLS temuan ß 0 dan β 1 yang meminimalkan jumlah kuadrat penyimpangan,β^0β^1
∑j=1n||zj−(β^0+β^1wj)||2=∑j=1n(z¯j−(β^0¯+β^1¯w¯j))(zj−(β^0+β^1wj)).
Secara formal ini identik dengan formulasi matriks biasa: bandingkan dengan Satu-satunya perbedaan yang kami temukan adalah bahwa transpose dari matriks desain X ′ digantikan oleh transpose konjugat X ∗ = ˉ X ′ . Akibatnya solusi matriks formal adalah(z−Xβ)′(z−Xβ).X′ X∗=X¯′
β^=(X∗X)−1X∗z.
Pada saat yang sama, untuk melihat apa yang mungkin dicapai dengan melemparkan ini ke masalah yang benar-benar variabel nyata, kita dapat menuliskan tujuan OLS dalam hal komponen nyata:
∑j=1n(xj−γ0−γ1uj+δ1vj)2+∑j=1n(yj−δ0−δ1uj−γ1vj)2.
Jelas ini mewakili dua regresi nyata yang terkait : salah satunya regresi pada u dan v , yang lain regresi y pada u dan v ; dan kami mensyaratkan bahwa koefisien v untuk x menjadi negatif dari koefisien u untuk y dan koefisien u untuk x sama dengan koefisien v untuk y . Apalagi karena jumlahnyaxuvyuvvxuyuxvykuadrat residu dari dua regresi harus diminimalkan, biasanya tidak akan menjadi kasus yang mana set koefisien memberikan estimasi terbaik untuk atau y saja. Ini dikonfirmasi dalam contoh di bawah ini, yang melakukan dua regresi nyata secara terpisah dan membandingkan solusi mereka dengan regresi kompleks.xy
Analisis ini membuatnya jelas bahwa menulis ulang regresi kompleks dalam hal bagian nyata (1) memperumit rumus, (2) mengaburkan interpretasi geometris sederhana, dan (3) akan membutuhkan regresi berganda multivariat umum (dengan korelasi nontrivial di antara variabel-variabel ) menyelesaikan. Kita bisa melakukan yang lebih baik.
Contoh
Sebagai contoh, saya mengambil kisi-kisi nilai pada titik-titik integral dekat asal dalam bidang kompleks. Ke nilai-nilai yang diubah w β ditambahkan kesalahan iid memiliki distribusi Gaussian bivariat: khususnya, bagian nyata dan imajiner dari kesalahan tidak independen.wwβ
Sulit untuk menarik sebar biasa untuk variabel yang kompleks, karena akan terdiri dari poin dalam empat dimensi. Sebaliknya, kita dapat melihat matriks sebar bagian nyata dan imajiner mereka.(wj,zj)
Abaikan kecocokan untuk saat ini dan lihat di empat baris teratas dan empat kolom kiri: ini menampilkan data. Grid lingkaran terlihat jelas di kiri atas; ini memiliki 81 poin. Plot sebaran komponen w terhadap komponen z menunjukkan korelasi yang jelas. Tiga di antaranya memiliki korelasi negatif; hanya y (bagian imajiner dari z ) dan u (bagian nyata dari w ) yang berkorelasi positif.w81wzyzuw
Untuk data ini, nilai sebenarnya dari adalah ( - 20 + 5 i , - 3 / 4 + 3 / 4 √β. Ini merupakan ekspansi dengan3/2dan rotasi berlawanan 120 derajat diikuti oleh terjemahan dari20unit ke kiri dan5unit up. Saya menghitung tiga kecocokan: solusi kuadrat terkecil kompleks dan dua solusi OLS untuk(xj)dan(yj)secara terpisah, untuk perbandingan.(−20+5i,−3/4+3/43–√i)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
Akan selalu menjadi kasus bahwa intersep hanya-nyata setuju dengan bagian nyata dari intersep kompleks dan intersep hanya imajiner setuju dengan bagian imajiner untuk intersep kompleks. Meskipun demikian, jelas bahwa lereng nyata-saja dan imajiner-saja tidak setuju dengan koefisien lereng kompleks atau dengan satu sama lain, persis seperti yang diperkirakan.
Mari kita lihat lebih dekat hasil dari fit kompleks. Pertama, sebidang residu memberi kita indikasi distribusi Gaussian bivariat. (Distribusi yang mendasari memiliki standar deviasi marjinal dan korelasi 0,8 .) Kemudian, kita dapat memplot besaran residual (diwakili oleh ukuran simbol lingkaran) dan argumen mereka (diwakili oleh warna persis seperti pada plot pertama) terhadap nilai yang dipasang: plot ini akan terlihat seperti distribusi acak ukuran dan warna, yang memang demikian.20.8
Akhirnya, kita dapat menggambarkan kecocokan dalam beberapa cara. Kecocokan muncul di baris dan kolom terakhir dari matriks sebar ( qv ) dan mungkin patut dilihat lebih dekat pada titik ini. Di bawah ini di sebelah kiri pas diplot sebagai lingkaran dan panah biru terbuka (mewakili residu) sambungkan ke data, ditampilkan sebagai lingkaran merah pekat. Di sebelah kanan yang ditampilkan sebagai lingkaran hitam terbuka diisi dengan warna yang sesuai dengan argumen mereka; ini dihubungkan oleh panah dengan nilai-nilai yang sesuai dari ( z j ) . Ingat bahwa setiap panah merupakan ekspansi dengan 3 / 2 di sekitar titik asal, rotasi dengan 120(wj)(zj)3/2120derajat, dan terjemahan oleh , ditambah kesalahan bivariat Guassian.(−20,5)
Hasil ini, plot, dan plot diagnostik semuanya menunjukkan bahwa rumus regresi kompleks bekerja dengan benar dan mencapai sesuatu yang berbeda dari regresi linier terpisah dari bagian nyata dan imajiner dari variabel.
Kode
The R
kode untuk membuat data, cocok, dan plot muncul di bawah. Perhatikan bahwa solusi yang sebenarnya dari β diperoleh dalam satu baris kode. Pekerjaan tambahan - tetapi tidak terlalu banyak - akan diperlukan untuk mendapatkan keluaran kuadrat biasa: matriks varians-kovarians dari fit, kesalahan standar, nilai-p, dll.β^
#
# 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)