Re: 3次元空間での直線回帰
工繊大の塚本です.
In article <cjqf5t$sa3$1@caraway.media.kyoto-u.ac.jp>
"Hiroyuki" <smine13@hotmail.com> writes:
> In article <041002020203.M01301379@ims.kit.ac.jp>
> Tsukamoto Chiaki <chiaki@kit.ac.jp> writes:
> > 直線からの距離の二乗の和は重心を通る直線について最小になる
> > ことが分かります.
>
> これでパラメーターは3つ減らせます。うれしい!
いえ, S^2 の接空間は 4 parameters で, そのうち 2つ減って
2 parameters になるのです.
> あ、おにりんさんがご指摘くださった多変量解析の
> 主軸を求めるという方法は、私、多変量解析をま
> じめに勉強したことがないので、主軸って何?とい
> う人ですから、最初からギブアップです。(^^;;
これは勉強されると良いと思います. 重心を原点にとってデータを
ベクトル X_a (a = 1, 2, ... , N)
┌ ┐
│X_{1a}│
X_a = │X_{2a}│
│X_{3a}│
└ ┘
で表します. 求める直線の単位方向ベクトル u ((u, u) = 1)
┌ ┐
│u_1│
u = │u_2│
│u_3│
└ ┘
をどう求めるかというと, Σ_a (X_a - (X_a, u) u, X_a - (X_a, u) u)
を最小にするように取れば良い訳ですが,
Σ_a (X_a - (X_a, u) u, X_a - (X_a, u) u)
= Σ_a (X_a, X_a) - Σ_a (X_a, u)^2
ですから, (u, u) = 1 という条件付の Σ_a (X_a, u)^2 の
最大値問題を解くことになります.
d((u, u) - 1) = 2(u, du) = 2 Σ_i u_i du_i,
d(Σ_a (X_a, u)^2) = 2 Σ_a (X_a, u)(X_a, du)
= 2 Σ_i (Σ_j (Σ_a X_{ia} X_{ja}) u_j) du_i,
ですから, ある実数λについて
d(Σ_a (X_a, u)^2) - λ d((u, u) - 1) = 0,
即ち,
Σ_j (Σ_a X_{ia} X_{ja}) u_j) = λ u_i (∀i)
を満たす u を求めることになります. これは Y = X X^*
Y_{ij} = Σ_a X_{ia} X_{ja}
という対称行列の固有ベクトルを求めることに他なりません.
(この対称行列は普通のデータについては正定値で), 最大値
問題の解, つまり最小二乗法に対応する解としては, 最大の
固有値λに対する固有ベクトル u ((u, u) = 1) を取ること
になります.
数学的にはこういうことですが, 実際にはこのようなものを
求めるパッケージはどこにでも転がっている筈ですから, お
探しになって見られれば良いでしょう.
--
塚本千秋@応用数学.高分子学科.繊維学部.京都工芸繊維大学
Tsukamoto, C. : chiaki@kit.ac.jp
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735