y  =a0
+ a11*x1 + a12*x1^2 + a13*x1^3 + ・・・
+ a21*x2 + a22*x2^2 + a23*x2^3 + ・・・
     ・
     ・


上記のような多変数多項式の各係数をエクセル2007で求めようとしているのですが、
やり方がわかりません。

単変数や1次の多変数の係数は、LINEST関数や回帰解析ツールを使えば、
求められることが分かったのですが、多変数多項式の各係数はどのようにして求めるのでしょうか。

どなたかご教授いただけると助かります。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

>被説明変数に影響がなさそうな説明変数ほど係数の絶対値が大きく、



必ずしもそうとは言えません。

xの係数(偏回帰係数という)の大きさや符号を考える上で,注意点が大きく分けて二つあります。

(1)
まず,単位の問題です。
これは回答者No3さんも指摘したとおりです。

例えば,
身長が1cm伸びたら体重が1kg増えた
というのと
身長が1cm伸びたら体重が1000g増えた
は,全く同じ現象です。

しかし,数学的には(数式上は),後者の増加率は前者の1000倍にもなります。

多変量解析では様々な単位の測定値を使うので,この点の注意が必要です。

(2)
次に,x(説明変数とか独立変数と呼ぶ)相互間の相関です。

これは分析に慣れた研究者でも忘れやすい点です。

回答者No3さんは
>(係数が)絶対値が大きいほど、yの値に影響
と述べましたが,この説明は誤解を与えます。

xを説明変数と述べましたが,これは,
yをどれだけ説明できるか,あるいは,どれだけ密接に結びついてるか
を調べるために計算された式だから,そう呼ぶのです。

それを検討するとき,
係数の絶対値が大きければ,より一層yと結びついてる
とは必ずしも言えません。

例えば,簡単のため2変数モデル(重回帰式)を考えます。
y=a*x1+b*x2

(a)
まず,次のような架空のデータを考えます。

yx1x2
115
328
534
746
1057

計算すると,
  y = 2.19* x1 + 0.063* x2 -1.74

となります。

x1の係数が,ずっと大きいですね。

そこで,各xとyとの相関を計算すると,

x1とy,r = 0.996
x2とy,r = 0.226

であり,見事にx1の影響が大きいことが示されているようです(実際には,後述の分析が必要)。

(b)
次に,別のデータを考えます。

yx1x2
31.96
54.112
42.99
76.118
96.921

同様に計算すると,
   y = -2.6* x1 + 1.3* x2 +0.32

となります。

ここでは,x1の係数の絶対値は,x2のそれの2倍あります。
では,x1 のほうがyを良く説明してるのでしょうか?

yとの相関を計算すると,

x1とy,r = 0.98
x2とy,r = 0.99

両方ともほとんど違わず,むしろx2のほうが,やや大きくなっています。

では,上の二つのデータ(a)と(b)のどこが違うのでしょうか?

説明変数相互間の相関を計算します。

(a) x1とx2,r = 0.2
(b) x1とx2,r = 0.998

実は,(b)は,x1とx2が相互に関連し合ってyに影響を与えていたのです。
だから,偏回帰係数の違いや大きさは,yに与える影響だけでなく,x相互間の影響も含んだものとなっているのです。

一方,(a)は,x1とx2の相互の影響が小さく,重回帰式がそのまま,各xがyに与える影響を反映しているのです。

前回指摘した問題点がここでも出てきました。

つまり,説明変数を多くすれば,それだけ,その相互間の影響も増えてくるのです。
x1, x2, x3
ならば,

x1 と x3
x2 と x3
x1 と x3

の相互間の影響を分析しなければなりません。
    • good
    • 0
この回答へのお礼

再度ご回答ありがとうございます。

(1)に関して、今扱っているデータは同じ単位なので問題ないですが、気をつけていないと忘れてしまいそうなのでこれも注意が必要ですね。

(2)-(b)は多重共線性が発生している状態ですよね。入力データに多少の変動を与えた場合に、係数ががんがん変わっていたのが、今思うとこれにあたるようですね。

多重共線性について勉強してみたのですが、とりあえず、多重共線性が発生している状態では回帰による結果が得られない、あるいは得られたとしても信頼性がなく、回帰に使うべきではないと言うことは分かりました。が、結局どんな現象が起きていて、何でだめなのかは分からず終いでした。

いろいろ教えていただいて、多変量解析は内容を知らないままソフトに任せていては危険だと言うことが今回よく分かりました。これから、勉強していこうと思います。

ご丁寧にどうもありがとうございました。

お礼日時:2011/04/21 00:25

No3のデータが読みにくくなってしまいました。



(a)
y,x1,x2
1,1,5
3,2,8
5,3,4
7,4,6
10,5,7

(b)
y,x1,x2
3,1.9,6
5,4.1,12
4,2.9,9
7,6.1,18
9,6.9,21
    • good
    • 1

>y  =a0+ a11*x1 + a12*x1^2 + a13*x1^3 + ・・・


これなら、説明変数は、x1だけでなので、単回帰分析。エクセルで、多次式を選択できます。
x2が入ると、重回帰分析になりますが、多変数、しかも多次式のものは、今まで目にしたことはありません。式の説明・解釈が困難だと想います。重回帰分析は、多重共線性という私には理解不能の部分をクリアしないと、実際には間違った重回帰式になりますので、式を説明できないと、苦しいのでは。

 重回帰式の係数については、絶対値が大きいほど、yの値に影響します。ただ、実際のデータの単位が、kgとgでこの係数が1000倍違ってきますので、それほど意味はないと判断しています。

 変数の数を増やし、次数を増やすほど、決定係数は1に近づき、信頼性は増します。が、説明は難しい=理解できないのでは。例えば、y=a+bx+cx^2の式でさえ、cx^2なんぞは説明が出来ないので、やらないことにしています。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

>式の説明・解釈が困難だと想います。
確かに多重共線性もそうですが、ちゃんと現象を理解できないまま回帰を使うのは危険ですね・・・

お礼日時:2011/04/20 23:32

単回帰でも、重回帰でも、同じツールで設定するようですが… ↓


http://www.ipc.shimane-u.ac.jp/food/kobayasi/mul …
エクセルでのやり方を数学カテゴリーで聞くのは、カテ違いですよ。
    • good
    • 0
この回答へのお礼

失礼しました。

お礼日時:2011/04/15 00:43

エクセルでは通常求まりません。



多変数多項式は,多変量解析となります。

ただし,3次以上にもなる多変数多項式は,実用的に意味があると思えないのですが・・

通常は,1次か,せいぜい2次です。

次数を増やせば増やすほど,変数を増やせば増やすほど,背後の現象と無関係になんでも説明できてしまうからです。

この場合,AIC(Akaike's Information Criteria,赤池の情報量基準)
http://aoki2.si.gunma-u.ac.jp/Yogoshu/1.html
などが,数式評価に用いられます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

リンク先とても参考になりました。
つまり次数を増やしてしまうと、オーバーフィッティングになってしまって、モデル式がロバストではなくなってしまうと言うことですね。

統計に関して初心者なので、もう一点お聞きしたいのですが、例えば、

y = a0 + a1*x1 + a2*x2 + a3*x3

のような場合、回帰分析で求められる係数の大きさにはどのような意味があるのでしょうか。

説明変数(x1,x2,x3)と被説明変数(y)のそれぞれのデータの関係を見ると、
被説明変数に影響がなさそうな説明変数ほど係数の絶対値が大きく、
逆に影響が大きそうな説明変数ほど係数の絶対値が小さくなっているように感じます。

それぞれの項の影響度を同じにするように係数は決定されている、というようなイメージでいいのでしょうか。

お礼日時:2011/04/15 00:42

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q多項式近似

エクセルであるデータの散布図を作りました。
ばらつきがみられたので、近似曲線をどうしようかと思ったのですが、6次の多項式近似を行ったところ、プロットした点をほぼすべて正確に通る近似曲線がひけました。
その近似式の式は
y==3E-10*x^6 - 8E-08*x^5 + 8E-06*x^4 - 0.0004*x^3 + 0.0091*x^2 - 0.0695x + 0.3314
でした。
R^2も0.999でほとんど1だったので、このデータ(曲線)の式=近似曲線の式とみなしてもいいと思ったのですが、ダメなのでしょうか?

実際のデータではx=97.12561のときy=6.37なのですが、この式に代入するとy=-14になってしまいます。
なぜでしょうか?
E-10というのは10^(-10)ということで正しいですよね?

Aベストアンサー

#1さんも言われているように単なる各項の有効桁数の不足による桁落ち誤差ですね。
多項式の各項の係数が1桁では、計算精度も高々1桁ですね。
x=97.12 ... ≒100=10^2ですから
y≒3*10^2-8*10^2+8*10^2-4*10^2+0.91*10^2-0.0695*10^2+0.003314*10^2
≒(3-8+8-4+0.9-0.1+0.0)*10^2
≒(-1.1+0.9)*10^2=-0.2*10^2
この計算は100の位だけが有効桁で10の桁は誤差の範囲に含まれ、有効桁数0桁に桁落ちしているということです。

なので100の桁が有効な桁なので、y=6.37もy=-14も見かけだけの数値で、その値が100より1桁以上、下の桁なので数値的意味はありません。

正確にy=6.37まで計算するには係数の有効桁数を6桁与えて計算し最後の桁を四捨五入しないといけないですね。
従って、エクセルで与える有効桁数を6桁以上にして計算しないといけないですね。エクセルの中では有効桁数は15桁(表示指定しなければ表示されないだけ)なので計算はその精度でやっています。
その係数を、人が介在して、表示されている係数データ(有効桁数を表示していない)を使って、近似多項式を書き写して入力しなおす作業で、有効桁数1桁の近似式になってしまいます。

>R^2も0.999でほとんど1だった
これは、エクセル中の表示されていない正確なデータを使って計算した数値だからです。
エクセルの中で保持しているデータの数値と、デホルト設定(あるいはエクセル使用者が設定した桁数設定)の表示データとは異なりますので、表示データをそのまま他で使わないように注意しないといけないですね。

#1さんも言われているように単なる各項の有効桁数の不足による桁落ち誤差ですね。
多項式の各項の係数が1桁では、計算精度も高々1桁ですね。
x=97.12 ... ≒100=10^2ですから
y≒3*10^2-8*10^2+8*10^2-4*10^2+0.91*10^2-0.0695*10^2+0.003314*10^2
≒(3-8+8-4+0.9-0.1+0.0)*10^2
≒(-1.1+0.9)*10^2=-0.2*10^2
この計算は100の位だけが有効桁で10の桁は誤差の範囲に含まれ、有効桁数0桁に桁落ちしているということです。

なので100の桁が有効な桁なので、y=6.37もy=-14も見かけだけの数値で、その値が100よ...続きを読む

Q近似曲線の数式を手計算で出したい。

エクセルを用いずに、近似曲線の数式をエクセルを用いずに算出したいです。

資料となるデータはあるし、計算機もあるのですが、エクセルは手元にないという状態です。

手計算で近似曲線のy=ax+bという数式を出すには、どのような計算をしたら算出できるのか、ご存じの方いらっしゃったら、どうか詳しく計算過程を教えて下さい。お願いします。

Aベストアンサー

線形近似においては、最小二乗法による推定が最も優れている(不偏かつ分散が小さい)ことがガウス=マルコフ定理によって証明されています。
最小二乗法とはデータが(X1,Y1),(X2,Y2),・・・(Xi,Yi)のように示されていると思うので、そのもとで
Σ(Yi-aXi-b)^2   (i=1,2,3・・・)
を最小化するようなa,bの組を見つけるという方法です。a,bの偏微分によって求めます。
具体的な式としては、Xの平均をX'、Yの平均をY'とし、データ数(標本数)をnとすると、
a=(ΣXiYi-nX'Y')/(ΣXi^2-nX'^2), b=Y'-aX'   (i=1,2,3・・・)
を得ます。
なお、ΣXiYiというのはX1・Y1+X2・Y2+・・・を意味し、ΣXi^2とはX1^2+X2^2+・・・を意味します。

例えば(X,Y)=(10,6),(12,9),(14,10),(16,10)というデータを考えると、標本数は4、Xの平均は13、Yの平均は8.75、ΣXi^2=696、ΣXiYi=468なので、これを代入して
a=(468-4×13×8.75)/(696-4×13^2)=0.65, b=8.75-0.65×13=0.3となり、
求める式はy=0.65x+0.3となります。

線形近似においては、最小二乗法による推定が最も優れている(不偏かつ分散が小さい)ことがガウス=マルコフ定理によって証明されています。
最小二乗法とはデータが(X1,Y1),(X2,Y2),・・・(Xi,Yi)のように示されていると思うので、そのもとで
Σ(Yi-aXi-b)^2   (i=1,2,3・・・)
を最小化するようなa,bの組を見つけるという方法です。a,bの偏微分によって求めます。
具体的な式としては、Xの平均をX'、Yの平均をY'とし、データ数(標本数)をnとすると、
a=(ΣXiYi-nX'Y')/(ΣXi^2-nX'^2), b=Y'-aX'   (i=1,2...続きを読む

Qエクセルの多項式近似について

エクセルのグラフの機能で、多項式近似というものがあるんですが、この多項式近似に使用されている、数値解析の考え方はなんでしょうか?
最小二乗法が使われているのでしょうか?
ご存知の方お教え下さい。

Aベストアンサー

ヘルプで「近似曲線」などを調べてみると、

| この分析方法は、回帰分析とも呼ばれます。

との事で、一般的に回帰分析と呼ばれる方法が利用されます。

--
Excelでの回帰分析に関して、以下のページが参考になります。1次式でしか使った事無かったですが、なるほど。

マック、まんが、アニメのページ? - Excelでn次多項式の係数を求めたい【Mac/Windows】
http://www.amy.hi-ho.ne.jp/fujisawa/mac/tips/excel_lesq.html

Qエクセル STDEVとSTDEVPの違い

エクセルの統計関数で標準偏差を求める時、STDEVとSTDEVPがあります。両者の違いが良くわかりません。
宜しかったら、恐縮ですが、以下の具体例で、『噛み砕いて』教えて下さい。
(例)
セルA1~A13に1~13の数字を入力、平均値=7、STDEVでは3.89444、STDEVPでは3.741657となります。
また、平均値7と各数字の差を取り、それを2乗し、総和を取る(182)、これをデータの個数13で割る(14)、この平方根を取ると3.741657となります。
では、STDEVとSTDEVPの違いは何なのでしょうか?統計のことは疎く、お手数ですが、サルにもわかるようご教授頂きたく、お願い致します。

Aベストアンサー

データが母集団そのものからとったか、標本データかで違います。また母集団そのものだったとしても(例えばクラス全員というような)、その背景にさらならる母集団(例えば学年全体)を想定して比較するような時もありますので、その場合は標本となります。
で標本データの時はSTDEVを使って、母集団の時はSTDEVPをつかうことになります。
公式の違いは分母がn-1(STDEV)かn(STDEVP)かの違いしかありません。まぁ感覚的に理解するなら、分母がn-1になるということはそれだけ結果が大きくなるわけで、つまりそれだけのりしろを多くもって推測に当たるというようなことになります。
AとBの違いがあるかないかという推測をする時、通常は標本同士の検証になるわけですので、偏差を余裕をもってわざとちょっと大きめに見るということで、それだけ確証の度合いを上げるというわけです。

Qエクセルの関数による近似式の求め方

(1)1,2,3,4 (2)5,6,7,8
(1)と(2)の二つの数字があります。
(1)をx軸、(2)をy軸としてエクセルの関数の式のみでy=a*x^2+b*x+cを求める事は可能ですか?
現状は(1)(x軸)と(2)(y軸)からグラフを書き近似曲線を描かせ、2次の多項式を表示させているんですが、大量にデータがあり、この作業に大変時間を要しています。調べに調べた結果、y=a*x+bの形は関数で表示可能なことは確認取れているんですが、2次の式は未だ発見できません。
非常に困っています。回答の方よろしくお願いします。また何か不明な点があったら何でも言って下さい。

Aベストアンサー

y の範囲 A2:A10
x の範囲 B2:B10
として、
C2=B2^2
C10までコピー。

と、しておけば
係数 a =INDEX(LINEST(A2:A10,B2:C10),1)
係数 b =INDEX(LINEST(A2:A10,B2:C10),2)
定数 c =INDEX(LINEST(A2:A10,B2:C10),3)

Q【Excel】3軸以上のグラフを作成できますか?

Excelでグラフを作成する場合
Y軸が2本で平面のグラフまでは
標準で用意されていると思うのですが、

例えば下のようなX軸が共通でY軸が3本以上必要となる(吸塵率「%」・粉塵量「個」・騒音レベル「dB」)
表をグラフ化する場合
どのようにすればいいのでしょうか?

銘柄   吸塵率% 排気中粒子 駆動音平均
手軽    16.3%      0個    54dB
排気0   13.4%    4000個    60dB
JET    35.3%    1000個    62dB
かるワザ 67.5%      0個    63dB

(表記中の固有名称その他は現実のそれとは何ら関係なく・またデータも説明用に一時的に作成されたものとする)

Aベストアンサー

 散布図でダミーのY軸を作成作れば、3軸でも4軸でも可能です。ただ、その軸をどのように配置するかという問題があります。
 また、3軸なら「三角グラフ」、4軸なら「Jチャート」というグラフもあります。2つとも散布図を工夫すれば、Excelで作成可能です。

 しかし、今回の表の場合は、作成元のデータを加工して、スネークプロット(縦の折れ線グラフ)またはレーダーチャートを作成したらいかがでしょうか。

 データの加工は、偏差値・達成率・最大値の対する比率などを使って基準を揃え、評価が高いほど値が高くなるように調整します。

Qエクセルの指数近似曲線の式から値を計算する

有るデータを元に指数近似曲線を描かせると「y = 2E+08e-0.098x R² = 0.9847」と出ました。
インターネット等を参考にしてエクセルで値を計算させようとして以下の式を作りましたが計算結果が全く元データと合いません、何が間違っているのでしょうか?教えて下さい。
y = 2E+08e-0.098x⇒y=2*POWER(10,8)*EXP((-0.098*x))

Aベストアンサー

質問者様はグラフに表示された数式と同じワークシートの数式を正しく作成されています。
(実際の数式ではyはなくxのところにセル参照が入っているのですよね)
元データと合わない原因ですが、グラフに表示された数式の係数の精度不足ではないでしょうか。
それが原因であれば、グラフに表示された数式の表示形式を変更して係数の精度を上げ、その数値でワークシートの数式を作り直せば多くの場合解決します。
どのような数値でも精度良く表示するためには、表示形式を指数にして小数点以下14桁にするとよいと思います。

ご存知かもしれませんが、以下念のためグラフに表示された数式の表示の変更方法を説明します。
Excel2003とExcel2007についての解説となりますが他のバージョンも大きくは違わないと思いますのでそこのところの対応はよろしくお願いいたします。
1.グラフに表示された数式を右クリック
2.2003なら「データラベルの書式設定」をクリック、2007なら「近似曲線ラベルの書式設定」を左クリックする。
3.書式設定のダイアログが出るので、「表示形式」を左クリック(2003は上、2007は左上。最初からクリックされた状態になっている可能性あり。)
4.「分類」(表示形式)の「指数」を左クリック。(「数値」はNG)
5.「小数点以下の桁数」を14にする。(最大30だが「分類」(表示形式)が「指数」ならば15以上は無意味。Excelの精度が15桁であるため。)
6.「OK」を左クリック

なお、質問者様の作成された式の「2*POWER(10,8)」の部分ですが、「2*10^8」「2E+08」「2e8」などとしても数式の値としては同じになります。

質問者様はグラフに表示された数式と同じワークシートの数式を正しく作成されています。
(実際の数式ではyはなくxのところにセル参照が入っているのですよね)
元データと合わない原因ですが、グラフに表示された数式の係数の精度不足ではないでしょうか。
それが原因であれば、グラフに表示された数式の表示形式を変更して係数の精度を上げ、その数値でワークシートの数式を作り直せば多くの場合解決します。
どのような数値でも精度良く表示するためには、表示形式を指数にして小数点以下14桁にするとよいと思...続きを読む

Q多項式近似の係数をセルに抜き出したい。

以前以下のような質問がありましたが、線形近似だけではなく、多項式近似の
y = ax^2 + bx + c のa、b、cをセル上に抜き出したいのですが、関数で対応できるでしょうか?

もし別のソフトで可能であれば、ソフト名を教えてください。

====以下、過去の質問から引用======

エクセルのグラフには、近似曲線を表示する機能がありますが、
その近似曲線の係数を参照元にして、セル上の関数計算をしたいと
思っています。

例えば、線形近似ならば、

 y= ○○○x + ●●●

という式をグラフ上に表示できるわけですが、この係数の
○○○や●●●を他のセルから参照したいんです。

グラフの元になる数値を変更した場合、リンクして変わる
ようにしたいので、手入力の転記では困るのです。

もし可能でしたら、ご教授ください。

Aベストアンサー

線形近似ならば、

傾き
 =SLOPE([Yの値], [Xの値])
切片
 =INTERCEPT([Yの値], [Xの値])

の関数を使って取り出せます。
線形以外になると…、VBAを使うとかしないと難しいかもしれません。

Qエクセルで計算すると2.43E-19などと表示される。Eとは何ですか?

よろしくお願いします。
エクセルの回帰分析をすると有意水準で2.43E-19などと表示されますが
Eとは何でしょうか?

また、回帰分析の数字の意味が良く分からないのですが、
皆さんは独学されましたか?それとも講座などをうけたのでしょうか?

回帰分析でR2(決定係数)しかみていないのですが
どうすれば回帰分析が分かるようになるのでしょうか?
本を読んだのですがいまいち難しくて分かりません。
教えてください。
よろしくお願いします。

Aベストアンサー

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるための指数表記のことですよ。
・よって、『2.43E-19』とは?
 2.43×1/(10の19乗)で、
 2.43×1/10000000000000000000となり、
 2.43×0.0000000000000000001だから、
 0.000000000000000000243という数値を意味します。

補足:
・E+数値は 10、100、1000 という大きい数を表します。
・E-数値は 0.1、0.01、0.001 という小さい数を表します。
・数学では『2.43×10』の次に、小さい数字で上に『19』と表示します。→http://ja.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E8%A1%A8%E8%A8%98
・最後に『回帰分析』とは何?下の『参考URL』をどうぞ。→『数学』カテゴリで質問してみては?

参考URL:http://ja.wikipedia.org/wiki/%E5%9B%9E%E5%B8%B0%E5%88%86%E6%9E%90

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるた...続きを読む

Q3次元の近似直線

こんにちは。2次元で実験データなどの点列から近似直線を求めるのは、最小二乗法の基本問題ですが、3次元の点群から直線の方程式(x-x0)/a=(y-y0)/b=(z-z0)/cを求めるにはどんなアルゴリズムを使いますか?スマートな方法があれば教えていただけたら幸いです。よろしくお願いします。

Aベストアンサー

3次元空間の曲面ではなく、直線に乗ると仰るのだから、
(1) x, y, zのどれかを与えて、残りの2つを推定する問題。
(2) <x[i],y[i],z[i]>と直線との距離d[i]の二乗和が最小になる直線を求める問題。
と分類すべきでしょう。

(1)の場合は、たとえばzを与えてx,yを求めたいのであれば、
・zからxを求める問題。
・zからyを求める問題。
の二つを別々に解けばおしまいです。
それぞれの解は(x=Az+B, yは任意)という平面と、(y=Cz+D, xは任意)という平面を定めますから、この二つの平面の交線が、求める直線ということですね。

(2)の場合はやっかいです。
[1]ちょっと手抜きしながらも、まともにやってみましょう。
(i) 直線をどう表すか。
ご質問の式を見ると、この直線はx軸、y軸、z軸のどれとも平行でも垂直でもないことが仮定されています。
ですから、zをパラメータとして
x=az+c
y=bz+d
と書いても良いでしょう。a,b,c,dが決められれば良い訳です。
(ii) 点<p,q,r>と直線との最短距離を求める。
直線上の任意の点<az+c,bz+d, z>と点<p,q,r>の距離をdとすると
d^2 = (az+c-p)^2+(bz+d-q)^2+(z-r)^2
= (az)^2+2az(c-p)+(c-p)^2+(bz)^2+2bz(d-q)+(d-q)^2+z^2-2rz+r^2
です。これが最小になるzを求めると、
0=∂(d^2)/∂z = 2(az+c-p)a+2(bz+d-q)b+2(z-r)
ゆえに
z=(ap+bq+r-ac-bd)/(a^2+b^2+1)
であって、このときの最短距離h(p,q,r)は
h(p,q,r)^2 = (ap+bq+r-ac-bd)^2/(a^2+b^2+1)+2(ap+bq+r-ac-bd)(ac-ap+bd-bq-r)/(a^2+b^2+1)+(c-p)^2+(d-q)^2+r^2
わあ、とんでもないですね。
(iii) じゃあ、直線を求めるには?
S=Σ(h(x[i],y[i],z[i]))^2  (i=1,2,...,N)
を最小化するには
∂S/∂a = 0
∂S/∂b = 0
∂S/∂c = 0
∂S/∂d = 0
を解く必要があります。言い換えれば
∂(h(x[i],y[i],z[i]))/∂a
∂(h(x[i],y[i],z[i]))/∂b
∂(h(x[i],y[i],z[i]))/∂c
∂(h(x[i],y[i],z[i]))/∂d
を求めておいて
Σh(x[i],y[i],z[i]) (∂(h(x[i],y[i],z[i]))/∂a)=0
Σh(x[i],y[i],z[i]) (∂(h(x[i],y[i],z[i]))/∂b)=0
Σh(x[i],y[i],z[i]) (∂(h(x[i],y[i],z[i]))/∂c)=0
Σh(x[i],y[i],z[i]) (∂(h(x[i],y[i],z[i]))/∂d)=0
という連立方程式を解くことになります。
これがa,b,c,dについて非線形である(一次式でない)ことは言うまでもありません。一筋縄では行かず、反復計算で徐々に収束させていくしかありません。

[2]手抜き
もうすこし手抜きの方法を考えてみましょう。
この座標系を回転・平行移動した座標系をX-Y-Zとします。そして、求めたい直線がZ軸と一致するようにしたとします。回転と平行移動は行列を使って
X = R x + p
Y     y   q
Z     z   r
と表せます。Rは3×3の行列で Rの転置をR'とすると RR' = R' R = 単位行列
となる行列です。各点<x[i],y[i],z[i]>をこの変換で<X[i],Y[i],Z[i]>に写したとすると、
直線、すなわちZ軸との最短距離はX[i]^2 + Y[i]^2ですから、他のどんな回転・平行移動の仕方に比べても
U=Σ(X[i]^2 + Y[i]^2)  (i=1,2,....,N)
が最小になっている筈で、しかも
S=U
です。
 さて、UはZ[i]の値とは無関係ですからZ[i]を求める必要はない。さらに座標系をZ軸の周りで回転してもUは変化しません。従って、
X = R x + p
Y     y   q
      z
R =P(α)Q(β)
P(α)=cosα  0  -sinα
       0   1    0
Q(β)= 1  0     0
      0 cosβ -sinβ
      0 sinβ  cosβ
とすれば良いのです。展開すれば
X[i] = x[i]cosα-y[i]sinαsinβ-z[i]sinαcosβ+p
Y[i] = y[i]cosβ-z[i]sinβ+q
ですね。
ここでα、β、p、qを決めたい訳です。

 始めに(1)の問題を解けば、α、β、p、qの大体の値を求めることができます。これを使ってU(α,β,p,q)を計算します。
 それから、U(α,β,p,q)が小さくなるようにα、β、p、qをちょっとずつ改良して行けば良いでしょう。これには微小な角度Δα、Δβを使って、
P(Δα)=cosΔα  0  -sinΔα
        0    1    0
      sinΔα  0   cosΔα
Q(Δβ)= 1  0      0
       0 cosΔβ -sinΔβ
       0 sinΔβ  cosΔβ
を作り、P(α)、Q(α)にそれぞれ掛け算すれば良い。
P(α+Δα)=P(Δα)P(α)
Q(β+Δβ)=Q(Δβ)Q(β)
だからです。さらにここで、Δα、Δβは微小だから、
cosΔα≒1、cosΔβ≒1、sinΔα≒Δα、sinΔβ≒Δβ
(Δα)^2≒0、(Δβ)^2≒0、ΔαΔβ≒0
という近似をしても構わないでしょう。
この近似を利用すると計算は一層簡単になり、Uを最小にするようにΔα、Δβ、p、qを求める問題は線形最小二乗法(一次式の最小二乗法)になってしまい、簡単に解けます。
それを解いてから、真面目にP(α)、Q(α)を計算しなおし、また線形最小二乗法を解く。これを収束するまで繰り返せば良いのです。

なお、stomachmanは計算間違いの常習犯ですから、チェックは慎重に。

3次元空間の曲面ではなく、直線に乗ると仰るのだから、
(1) x, y, zのどれかを与えて、残りの2つを推定する問題。
(2) <x[i],y[i],z[i]>と直線との距離d[i]の二乗和が最小になる直線を求める問題。
と分類すべきでしょう。

(1)の場合は、たとえばzを与えてx,yを求めたいのであれば、
・zからxを求める問題。
・zからyを求める問題。
の二つを別々に解けばおしまいです。
それぞれの解は(x=Az+B, yは任意)という平面と、(y=Cz+D, xは任意)という平面を定めますから、この二つの平面の交線が、求め...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報