円筒面上のN個の点に対して回帰直線(らせん)を計算する効率のよい方法はないでしょうか。


具体的には、単位円上のN個の点を円周上の角度θ_1, θ_2, ... , θ_N(0以上2π 未満)で表すとして、i=1, 2, …, Nについて
  θ_i ≒ a i + b ( mod 2π )
となる係数a, bを求めたいのです。aは2πを超える可能性があります。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2007/10/05 21:37:22
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:ita No.2

回答回数204ベストアンサー獲得回数48

ポイント60pt

あ、

θ_i ≒ a i + b ( mod 2π )

この式からすると、データは高さ方向に等間隔で並んでいるんですね。

θ_i ≒ a Hi + b ( mod 2π )

というように高さHiがバラバラという訳ではないんですね。

等間隔の場合は aに2πを足しても残差は変化しません。iが整数なら(a+2πn)i = ai ( mod 2π )なので。

それならθ_(i+1) - θ_i を i=1..n-1について平均すればa が出て、

θ_i - a i ( mod 2π ) を平均すれば b が出そうです。

id:LaLaLa

ありがとうございます。

aはmod 2πで考えてよいのですね。

階差の平均からまずaを求めるという方針でやってみます。

2007/10/05 21:29:40

その他の回答1件)

id:ita No.1

回答回数204ベストアンサー獲得回数48

ポイント10pt

通常の最小二乗法と同様の簡単な式で、というわけには

いかないでしょうね。残差を仮に

\Min_n (a i + b -\theta_i - 2n\pi)^2

と定義してaとbを変化させると、無数の極小値があります。

その中から最小値を探すので、どうしても全数検索のような

ことが必要になると思います。なので初めから割り切って、

bは0から2πまで、aは-10πから+10πまでくらいを

それぞれ1000づつくらいで区切ってスキャンして

残差の最小値を求めたほうがいいかもしれません。

id:LaLaLa

この方法はできれば避けたいです.....

2007/10/05 21:31:33
id:ita No.2

回答回数204ベストアンサー獲得回数48ここでベストアンサー

ポイント60pt

あ、

θ_i ≒ a i + b ( mod 2π )

この式からすると、データは高さ方向に等間隔で並んでいるんですね。

θ_i ≒ a Hi + b ( mod 2π )

というように高さHiがバラバラという訳ではないんですね。

等間隔の場合は aに2πを足しても残差は変化しません。iが整数なら(a+2πn)i = ai ( mod 2π )なので。

それならθ_(i+1) - θ_i を i=1..n-1について平均すればa が出て、

θ_i - a i ( mod 2π ) を平均すれば b が出そうです。

id:LaLaLa

ありがとうございます。

aはmod 2πで考えてよいのですね。

階差の平均からまずaを求めるという方針でやってみます。

2007/10/05 21:29:40

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません