pythonのpandasとnotebookを使ってデータ分析(5)

えっと前回の線形近似曲線ですが、少し補足させてください。
セルにコードを書きます。

%matplotlib inline
import pandas
import numpy
import matplotlib.pyplot as plt
df = pandas.DataFrame({
        'x': [6.559112404564946264e-01,
                 6.013845740818111185e-01,
                 4.449591514877473397e-01,
                 3.557250387126167923e-01,
                 3.798882550532960423e-01,
                 3.206955701106445344e-01,
                 2.600880460776140990e-01,
                 2.245379618606005157e-01],
         'y': [1.397354195522357567e-01,
                 1.001406990711011247e-01,
                 5.173231204524778720e-02,
                 3.445520251689743879e-02,
                 3.801366557283047953e-02,
                 2.856782588754304408e-02,
                 2.036328213585812327e-02,
                 1.566228252276009869e-02]})
axes = []
fig = plt.figure(figsize=(15,6))
for i, title in enumerate(["ols fit", "Linear exp fit", "log fit", "parabora fit"]):
    axes.append(fig.add_subplot(2, 2, i+1))
    axes[i].sharey = axes[0]
    axes[i].plot(df['x'], df['y'], "ro")
    axes[i].set_title(title)
    axes[i].grid()

str = "Sample Data"
str1 = "Fitted Function:\n"

def r2_string(r):
    return "$R^{2} = %0.5f$" % (r)

def ols_string(a, b, c):
    str2 = "$y = %0.4f x %s %0.4f$\n" % (a, "+" if b >= 0 else "", b)
    return [str, str1 + str2 + r2_string(c)]

def func_ols(a, b, x):
    return a * x + b

xx = numpy.arange(0.7, 0.2, -0.01)

model1 = pandas.ols(y=df['y'], x=df['x'], intercept=True)

print model1

axes[0].plot(xx, func_ols(model1.beta.x, model1.beta.intercept, xx))

axes[0].legend(ols_string(model1.beta.x, model1.beta.intercept, model1.r2), loc="upper left")

plt.show()

殆どコードは同じです。
(for分のところは、同じ記述をまとめただけです。)
変更したのは、「print model1」を追加しました。
そうすると、以下のものが表示されます。

これは、「pandas.ols」で作成された「model」の「summary」です。
注目すべきところは、「R-squared」「x」「intercept」ですね。
「Adj R-squared」は、「R-squared」が高く出すぎる事があるようなので
高く出すぎていないかを、確認するためのもの?
それが確認出来るもののようです。


他にも色々と表示されていますね。
「Formula」の所が直線の式です。「Y ~ +
あとは、「F-stat」「p-value」「t-stat」
この辺でも分かる事があるようですが、一旦置いておきます。


notebookはちょっとづつ書いて試せるのもいい所ですね。


今回は、これだけです。
それでは、、、