線形回帰の指数関数

# Y = alpha + beta * x
# 下の式を上に変換
# y = a * exp(b * x)
# Y = log(y), a = exp(alpha), b = beta

x = np.array([-2.1, -1.3, -0.4, 0.1, 0.6, 1.2, 1.6, 1.9])
y = np.array([0.5, 0.7, 1.0, 1.5, 3.2, 4.6, 5.0, 6.8])

Y = np.log(y)

s_cov = np.cov(np.vstack([x, Y]), ddof=1)

# 分散および共分散を抽出
s_x2 = s_cov[0][0]
s_xy = s_cov[0][1]
s_y2 = s_cov[1][1]

alpha_hat = Y.mean() - (s_xy / s_x2 * x.mean())
beta_hat = s_xy / s_x2

a_hat = np.exp(alpha_hat)

# Y_hat = alpha_hat + beta_hat * x