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はちょっとづつ書いて試せるのもいい所ですね。
今回は、これだけです。
それでは、、、