dポイントプレゼントキャンペーン実施中!

複素数同士の回帰式をエクセルでつくりたいのですが、どうすればいいのでしょうか?

例えば、
15-10i,90-60i
20+06i,30+35i
   ・
   ・
   ・
の列がずっと続いていた場合、どのようにしたら回帰式をつくれるのでしょうか?
一旦変換などしてからでないと計算できないのでしょうか?

A 回答 (5件)

ANo.3です。

手軽な方法を思いつきました。
各変数を次のように実数部と虚数部に分けます。

  Y=Y1+iY2
  X=X1+iX2
  A=A1+iA2
  U=U1+iU2

すると、

  Y1+iY2=(X1A1-X2A2+U1)+i(X1A2+X2A1+U2)

ですから、

  Y1=X1A1-X2A2+U1
  Y2= X2A1+X1A2+U2

となります。したがって、次のような実数値2n個の観測値があるとみなして、普通の回帰分析(エクセルの分析ツールの回帰分析)を実行すればよいと思います。

前半のn個について
  被説明変数はY1
  説明変数は(X1,-X2)

後半のn個の観測値
  被説明変数はY2
  説明変数は(X2,X1)

2k個の回帰パラメータが出力されますが、前半のk個はAの実数部で、後半のk個はAの虚数部です。

なお、t値等の統計量も出力されますが、これらは、「残差項が独立」という前提だけでなく、「残差項の実数部と虚数部が独立」という前提も満たされて初めて意味を持ちます。
    • good
    • 0

ANo.3です。

Rの説明の下半分が間違っていました。
Rの下半分s行は、(P2,P1)です。
    • good
    • 0

回帰式を作るだけなら、エクセルのワークシート関数を組み合わせて計算できます。



(実数の最小二乗法)

まず、実数の最小二乗法について復習しておきましょう。

説明変数の個数をk、観測値の個数をnとします。例えば、y=ax+bという回帰式なら、説明変数はxと1の2個なので、k=2になります。記号を次のように置きます。

  Y 被説明変数の観測値の列ベクトル(n行1列行列)
  X 説明変数の観測値の行列(n行k列行列)
  A 回帰パラメータの列ベクトル(k行1列行列)
  U 残差項列ベクトル(n行1列行列)

回帰式は、

  Y=XA+U

となります。

回帰式を求めるというのは、Aを計算することに他なりません。「Aが最小二乗法の回帰パラメータであること」の定義は、「XとUが直交すること」です。U=Y-XAですから、この条件は、「Xの各列と、Y-XAとの内積が0になること」と同じです。これを行列の演算で表現すれば、

  tX(Y-XA)=0

となるので、Aは、

  A=(tXX)^(-1)tXY

で計算されます(tXはXの転置行列を表す)。


(複素数の場合)

上の説明では、Y,X,A,Uが実数であるという条件を、1か所を除き使っていません。1か所というのは、内積を行列で表すとき、上の説明で「転置行列×相手の行列」としていますが、複素数の場合は「転置行列の複素共役×相手の行列」としなければなりません。その部分だけを修正して、複素数の場合の回帰パラメータは、

  A=(τXX)^(-1)τXY (τXは、Xの転置行列の複素共役)

で計算されます。

(エクセルのワークシート関数による計算)

Aの計算式には、行列の乗算と逆行列が出てきます。実数行列ならMMULTやMINVERSEというワークシート関数が使えます。そこで、複素数行列の乗算や逆行列は、次のように実数行列の演算に直して計算すればよいのです。

Pをs行t列、Qをt行u列の複素数行列とし、P1、P2、Q1、Q2を実数行列として、

  P=P1+iP2
  Q=Q1+iQ2

とするとき、

(乗算) PQ=(P1Q1-P2Q2)+i(P1Q2+P2Q1)

(逆行列) s=tとするとき、Pの逆行列の実数部分は、R^(-1)の左上s行s列、虚数部分は、R^(-1)の左下s行s列。ただし、Rは、2s行2s列の行列で、上半分のs行が(P1,-P2)となり、下半分のs行が(P1,P2)となるもの。

(補足)

回帰パラメータを計算するだけなら、上のようにワークシート関数を組み合わせて計算できます。ただ、回帰分析では、決定係数、t値、F値などの統計量が重要な意味を持ちます。これらをワークシート関数で計算するのは、かなり面倒と言わなければなりません。きちんと回帰分析を行うのなら、ANo.1さんが仰るように、VBAでプログラムを組むのが正道だと思います。
    • good
    • 0

あ、「エクセルで」か…


そのマイクロソフト製品に、No.1 に書いたような
機能があるかどうかは、数学の問題ではないし、
私は、知りません。
確か、VBA を使えば、プログラムでできることは、
ひととおりできたはずですよね。
    • good
    • 0

「回帰式」の定義しだいでしょうね。


実数の場合、回帰式は誤差二乗和が最小になる
一次近似式のことでしたが、
複素数では、誤差二乗和というものに意味がありません。
代わりに、絶対誤差の二乗和が最小になる
一次近似式を作れば、有用だと思います。
求めかたも、普通の回帰式とほぼ同様です。
それを「回帰式」と呼ぶかどうかは、知りませんが。
    • good
    • 0
この回答へのお礼

ありがとうございます。
絶対誤差の二乗和を求めるのにはどうすればいいのでしょうか?

お礼日時:2010/11/07 19:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!