- 締切済み
三角関数を含んだモデル式での回帰分析の方法を教えてください.
実験データを, Y = A * TAN( 2 * PI() * X / B ) Y・・・目的変数 X・・・説明変数 A, B ・・・係数 TAN() ・・・タンジェント PI() ・・・円周率 というモデルの回帰式に当てはめたいと考えているのですが, A,Bの値をどのように求めればいいのかが,よく分かりません. 対数線形回帰分析のようにこのモデルを, Y = A * X + B といった線形モデルに変形することは可能なのでしょうか. 不可能な場合は,どのようにしてA,Bを求めればいいのでしょうか. 回帰分析に詳しい方,よろしくお願いします.
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- jaspachate
- ベストアンサー率60% (32/53)
No.2 です。 >得られたAとBをそのまま元の式 >y = A tan(Bx) >に代入しても,欲しいような式は得られませんでした. a,b から A,B に変換すると、A^2 = a/b, B^2 = ab なので, 線型回帰からab<0 の答えが得られると、実数のA,Bではなくなります。こういうケースでしょうか? もしそうならば、aかbが統計変動かdy/dxの作り方がよくないために0付近で負の値が出てしまったと思われます。 また、dy/dxの作り方が良くないと最適値とはかけ離れたa, bが求められてしまうことがあります。 まず、dy/dx(=Y) 対 y^2(=X) のグラフはどのようになったでしょうか?きれいに直線状になったでしょうか?それともがたがたでしょうか? もとのデータにもよりますが、がたがたなようであればdy/dxの作り方を工夫する必要があるでしょう。また、もとのデータで曲線から大きく外れたようなデータ点は除外しないと非線型最小二乗法でもこの方法でも解は不安定になります。そういうデータ点をdy/dxを作るときに含めると、dy/dxデータとして大きく外れた点を与えてしまい、a, b の解を大きく変えてしまいます。 どのように作ったか補足してくださればアドバイスできるかもしれません。 もしもとのデータがそもそも Atan(BX) のように見えにくいほど変動の大きいデータなのであればこの方法はあまり良くないかもしれません。その判定はやはりdy/dx対y^2がきれいな直線状になるかどうかです。
- gef00675
- ベストアンサー率56% (57/100)
データを見てないので、明確な助言はできませんが、tanを当てはめるときの難しい点として、 1.周期関数であること。 2.π/2, 3π/2, 5π/2,...に特異点をもつこと があります。今の場合、周期性は関係ないと想像しますが、π/2における特異性が問題です。このとき、全データがx<B/4でなければならず、また、xがB/4の付近では、tanの値はxの変化に極めて鋭敏なので、特異点の付近の値だけでほぼ係数A,Bが決まってしまい、そのために他の点ではあまり当てはまらなくなる、ということが起ります。 そういう場合の処理のしかたは、特異点の付近のデータを取り除いて(あるいは適当なウェイトをかけて)、最小2乗法をx<B/4の条件のもとで適用して、係数を決定することが考えられます。数学的には、x,yを適当に変数変換して、x<B/4の条件の下での最小2乗解を求めることになるのですが、どうすればうまくいくか、データとにらめっこして、いろいろ試すしかないでしょう。データを変数変換しただけで、A,Bの値が変わってきます。データのフィッティングというのは、結局のところ主観によりますから。
- jaspachate
- ベストアンサー率60% (32/53)
ご参考までに。 y = A tan(Bx) は微分方程式、 dy/dx = a + by^2、 a=AB、b=B/A を満たします。 データから何らかの方法で dy/dx を求め、それをデータとして Y とおき、y^2 = X とおけば、 Y = a + bX の線型回帰式になります。 元データからそれらの (X、Y) のあらたなデータの組を作る方法はいろいろありますが、もし元データが多く曲線にそって密集しているなら適当にxを区分に分割し区分ごとにyの平均値を取り、それから区分ごとにdy/dx を計算するのが簡単です。元データが散逸的で、曲線補間できるようなものであれば、単に (y[n]-y[n-1])/(x[n]-x[n-1]) のようにして dy/dx[n]を計算してもいいでしょう。多項式補間を行ってそれを微分してdy/dxを求める方法もあります。 このような方法による結果は、またもとのtanの式を用いて直接に非線型最小二乗法などを用いるときの良い初期値を与えます。非線形最小二乗法にはニュートン法やLevenberg-Marquardt法が用いられますが、パラメータの良い初期値がわかっている場合はニュートン法でも精度良く求める事ができます。Levenberg-Marquardt法は非線形効果を扱うのですが、ニュートン法にあるパラメータを導入しただけの非常にシンプルな方法で、アルゴリズムはニュートン法そのものであり、初期値が解より遠い場合でも威力を発揮します。
- arrysthmia
- ベストアンサー率38% (442/1154)
「当てはめたい」が、どのように当てはめたいという希望なのか によって話は異なる。 よくあるのは、「最小二乗法」という奴。 実験データ (X,Y) = (x_1,y_1), (x_2,y_2), (x_3,y_3), … に対して、 誤差二乗和 E = Σ{ y_k - A tan(2π x_k / B) }^2 が最小になる ような A, B を求めて満足しようという方法。 どのような条件をみたす A, B に満足するかは、主観的な問題なので、計算を始める前によく考えて 決めておく必要がある。 最小二乗法で行こう!ということであれば、E の極小値を与える A, B を求めればよい。それは、非線形連立方程式 0 = ∂E/∂A = Σ{ y_k - A tan(2π x_k C) } tan(2π x_k C), 0 = ∂E/∂C = Σ{ y_k - A tan(2π x_k C) } (A 2π x_k) / cos^2 (2π x_k C), C = 1/B. の解である。 この式から A を消去して、C の方程式 Σ{ y_k tan(2π x_k C) }・Σ{ x_k tan(2π x_k C) / cos^2 (2π x_k C) } = Σ{ tan^2 (2π x_k C) }・Σ{ (x_k・y_k) / cos^2 (2π x_k C) } が得られるが、こんなものは解きようもない。 厳密解は諦めて、近似解を求めることを考えよう。 左辺 - 右辺 = f(C) と置き、f(C) = 0 となる C の近似解を求める。 ニュートン法が簡明だろう。 0 ≒ f(C_{n+1}) ≒ f(C_n) + f ' (C_n)・(C_{n+1} - C_n) という近似から、 漸化式 C_{n+1} = C_n - f(C_n) / f ' (C_n) によって近似解を逐次改良してゆく 方法である。 f ' の式を展開するだけでタメイキが出るが…
お礼
やはり,これを解かないとだめなんですかね・・・ 参考にさせていただきます. ありがとうございました.
補足
ご回答ありがとうございます. Y = a + bX の線形回帰式から a, b, A, Bを導出することができました. ただ,得られたAとBをそのまま元の式 y = A tan(Bx) に代入しても,欲しいような式は得られませんでした. (何度も確認したので計算ミスではないと思うのですが・・・) ここで求めた,AとBは解そのものではなく 非線形最小二乗型等で分析を行うときの初期値に用いるために求めたものなのでしょうか. よろしくお願いします.