線形回帰
ここでは、出生率が女性の非識字率に対して線形関数だと仮定します。つまり、\(f = a i + b\) で、\(a\) は傾き、\(b\) は切片です。切片は最小の出生率と考えられ、だいたい 1 と 2 の間にあるでしょう。傾きは、非識字率が変化したときに出生率がどのように変わるかを示します。最小二乗の当てはめ直線は np.polyfit() で求められます。
データと最適な当てはめ直線をプロットし、傾きと切片を表示してください。(それぞれの単位は何か、考えてみましょう。)
この演習はコースの一部です
Pythonで学ぶ統計思考(パート2)
演習の手順
np.polyfit()を使って回帰直線の傾きと切片を計算します。fertilityは y 軸、illiteracyは x 軸であることを忘れないでください。- 線形回帰で得た傾きと切片を表示します。
- 最適直線を描くには、
np.array()で 0 と 100 からなる配列xを作り、回帰パラメータに基づく理論値yを計算します。すなわちy = a * x + bです。 - 同じプロット上にデータと回帰直線を描画します。軸ラベルも付けてください。
- 完了したら提出してプロットを表示します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Plot the illiteracy rate versus fertility
_ = plt.plot(illiteracy, fertility, marker='.', linestyle='none')
plt.margins(0.02)
_ = plt.xlabel('percent illiterate')
_ = plt.ylabel('fertility')
# Perform a linear regression using np.polyfit(): a, b
a, b = ____
# Print the results to the screen
print('slope =', a, 'children per woman / percent illiterate')
print('intercept =', b, 'children per woman')
# Make theoretical line to plot
x = ____
y = ____ * ____ + ____
# Add regression line to your plot
_ = plt.plot(____, ____)
# Draw the plot
plt.show()