「ブロック機能」のリニューアルについて

片対数グラフ(対数:y軸)の近似直線を引いたのですが、
直線を求める式も書けと言われました。
どのような式でしょうか?

教えて!goo グレード

A 回答 (2件)

log は底を10とする対数、lnは自然対数とします。


つまり
ln x = (log x)/(log e) = (log x)(ln 10)

[1] ご質問のグラフでは、
<x[j],y[j]> (j=1,2,.....,N)
というデータが与えられ、
Y[j]=log y[j]
として、モデル
g(x) = a x + b
をデータ
<x[j],Y[j]> (j=1,2,.....,N)
に当て嵌めて直線を描いた、という訳です。

 こういう当て嵌めを式の上で扱うひとつの(そして大抵最も易しくて実用的な)方法は「最小二乗法」です。

g(x[j])とY[j]の差(残差と言います)を
E[j] = g(x[j]) - Y[j]
とするとき、E[j]の二乗和(残差二乗和)
T = Σ{j=1,2,...,N} (E[j]^2)
が最小になるようにa,bを決める(だから最小二乗法と呼ばれます)。
このためにはTをa,bでそれぞれ偏微分して0とおきます。
∂T/∂a = 0
∂T/∂b = 0
この連立方程式で、Tに上記の式を代入すると
2Σ{j=1,2,...,N} (a x[j] + b - Y[j])(∂/∂a)(a x[j] + b - Y[j])= 0
2Σ{j=1,2,...,N} (a x[j] + b - Y[j])(∂/∂b)(a x[j] + b - Y[j])= 0
となり、さらに整理すると
Σ{j=1,2,...,N} (a (x[j]^2) + bx[j] - Y[j]x[j])= 0
Σ{j=1,2,...,N} (a x[j] + b - Y[j])= 0
従って
aΣ(x[j]^2) + bΣx[j] - Σ(Y[j]x[j])= 0
aΣx[j] + bΣ1 - ΣY[j]= 0
ただしΣはいずれもj=1,2,...,Nについての総和です。(ゆえにΣ1=N)
これをa,bについて解けば(二元連立一次方程式ですから簡単です)a,bが決まります。
~~~~~~~~~~~~~~~~~~~~~~~~~
と、まー、ここまでが「普通」の答でしょう。

[2] でもグラフをよく見ると、yの値が大きい所ほど対数の目盛りがおおざっぱになっています。これはどういうことか。すなわち、yが小さい所では僅かな誤差に拘り、yが大きいところは誤差が大きくても気にしない。そういう評価のしかたで「近似直線」を描いたわけで、上記のa,bの計算方法でもそういう評価の仕方をそのまま踏襲したことになっています。
 でも「yの値が大きいなら誤差も大きくて良い、という訳ではない」という場合もしばしばあります。そして、対数の目盛りが一様でないことの影響は、以下のようにして簡単に補正することができます。
log y = a x + b
というモデルを
<x[j],y[j]> (j=1,2,.....,N)
というデータに当て嵌めます。今度のモデルは
f(x)=10^(ax + b)
です。モデルf(x[j])とデータy[j]との差をε[j]とおく。
y[j]+ε[j] = f(x[j])
このε[j]の二乗和がなるべく小さくなるようにa,bを決めたい、という問題を考えます。([1]ではE[j]の二乗和がなるべく小さくなるようにa,bを決めた訳です。)

両辺をy[j]で割って、(対数グラフにプロットできるんだから、y[j]>0であることは自明です)
1+ε[j]/y[j] = f(x[j])/y[j]
さらに自然対数をとると
ln(1+ε[j]/y[j]) = ln(f(x[j])) - ln(y[j])
です。ここで「 |ε[j]| はy[j]やf(x[j])に比べて充分小さい」と仮定しましょう。すると、
ln(1+c) ≒ c (|c|が1よりうんと小さいとき)
という近似式が使えて、
ln(1+ε[j]/y[j]) ≒ε[j]/y[j]
だから、
ε[j]/y[j] ≒ ln(f(x[j])) - ln(y[j])
従って、
ε[j] ≒ y[j] ln(f(x[j])) - y[j] ln(y[j])
となります。これをlog,a,bを使って表せば
ε[j] ≒ (ln 10)y[j] (ax[j] + b) - y[j] ln(y[j])
です。展開して
ε[j] ≒ (ln 10)a y[j]x[j] + (ln 10)b y[j] - y[j] ln(y[j]))
となります。ここで
A=(ln 10)a
B=(ln 10)b
とおくと、
ε[j] ≒ A y[j]x[j] + B y[j] - y[j] ln(y[j])
です。εの二乗和S
S=Σ{j=1,2,...,N} ((ε[j])^2)
を最小にするために、SをA,Bでそれぞれ偏微分したものが0である、という方程式を立てると、
∂S/∂A = 0
∂S/∂B = 0
左辺は
∂S/∂A =(∂/∂A)Σ{j=1,2,...,N} ((ε[j])^2)
=Σ{j=1,2,...,N} (∂/∂A)((ε[j])^2)
=2Σ{j=1,2,...,N} (ε[j])(∂/∂A)(ε[j])
≒2Σ{j=1,2,...,N} (y[j]x[j])(A y[j]x[j] + B y[j] - y[j] ln(y[j]))
同様に
∂S/∂B ≒2Σ{j=1,2,...,N} (y[j])(A y[j]x[j] + B y[j] - y[j] ln(y[j]))
となりますから、結局
A Σ(y[j]x[j])^2 + B Σ((y[j]^2)x[j]) - Σ((y[j]^2)x[j])ln(y[j]))=0
A Σ((y[j]^2)x[j]) + B Σ(y[j]^2) - Σ((y[j]^2)ln(y[j]))=0
という連立方程式をA,Bについて解けば良い。(Σはいずれもj=1,2,...,Nの総和です。)そしてA,Bから
a = A/(ln 10)
b = B/(ln 10)
が得られます。
    • good
    • 2

片対数グラフ(対数:y軸)の近似直線ということなので


log y=ax+b →  y=exp(ax+b)=b'×(a')^x, b'=exp(b), a'=exp(a)
では無いでしょうか?
    • good
    • 3

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

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

教えて!goo グレード

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

人気Q&Aランキング