全コードは右上のCodeを参照されたい。

問1

前提条件

a <- 1000
b <- 8000

問題

1.資産額\(W\)の期待値を求めよ.

# 一様分布の期待値
uniform_mu <- function(a, b) {(a + b) / 2}

# 資産額wの期待値
w_mu <- uniform_mu(a, b)

一様分布の期待値の計算は、次の式で求められる。 \[ E[x] = \frac{a + b}{2} \\ = \frac{1000 + 8000}{2} \\ = 4500 \]

2.資産額\(W\)の標準偏差を求めよ.

# 資産額wの分散
uniform_variance <- function(a, b) {(b - a)^2 / 12}

# 資産額wの標準偏差
w_sd <- (uniform_variance(a, b))^(1/2)

標準偏差は、分散の2乗根で求められるため、まず、以下の式で一様分布の分散を計算する。

\[ \sigma^2 = \frac{(b - a)^2}{12} \\ = \frac{8000 - 1000}{12} \\ = 4.0833333\times 10^{6} \] 次に、分散の2乗根を計算することで、標準偏差を計算する。

\[ \sigma = \sqrt{\sigma^2} \\ = \sqrt{4.0833333\times 10^{6}} \\ = 2020.7259422 \\ \approx 2020.73 \]

3.効用関数が\(U(W)=W^{2/3}\)で与えられたとき,この投資に対する期待効用を求めよ.

# 効用関数
utility_function <- function(w) {w^(2/3)}

# 積分
integrate(utility_function, a, b)

この投資に対する確率密度関数は、次のように与えられる。

\[ f_W(w) = \left \{ \begin{array}{} \frac{1}{7000} \quad 8000 \geq w \geq 1000 \\ 0 \quad w < 1000 \quad or \quad w < 8000 \end{array} \right. \] したがって、期待効用は、

\[ E[U(W)] = \int_{-\infty}^{\infty} U(w)f_W(w) dw \\ = \int_{8000}^{1000} \frac{w^{2/3}}{7000}dw\\ = \frac{1}{7000} \int_{8000}^{1000}w^{2/3} \\ = \frac{1}{7000}[\frac{3}{5}w^{5/3}]^{8000}_{1000} \\ = \frac{1}{7000}\frac{3}{5}[w^{5/3}]^{8000}_{1000} \\ = \frac{5}{35000}(8000^{3/5}-1000^{3/5}) \\ = 0.0223738... \\ \approx 0.0224 \]

問2

# Enviromentをクリア
rm(list = ls())

前提条件

# E[r]
r_mu <- 0.0200

# E[r^2]
r2_mu <- 0.0148

# 資産額wの確率変数
w <- function(r) {1000 * (1 + r)}

問題

1.収益率\(r\)の標準偏差を求めよ.

#収益率rの分散
r_var <- r2_mu - r_mu^2

#収益率rの標準偏差
r_sd <- sqrt(r_var)

分散は、次のように与えられる。 \[ Var[r] = E[r^2]-E[r]^2 \]

したがって、分散は、 \[ Var[r] = E[r^2]-E[r]^2 \\ =0.0148 - 4\times 10^{-4} \\ =0.0144 \]

標準偏差は、分散の二乗根である為、

\[ SD[r] = \sqrt{Var[r]} \\ = 0.12 \]

2.資産額\(W\)の期待値と標準偏差を求めよ.

# 資産額$W$の期待値
w_mu <- 1000*r_mu + 1000

# 資産額$W$の標準偏差
w_sd <- 1000*r_sd

資産額\(W\)は、\(W = 1000(1 + r)\)で計算され、\(E[r] = 0.0200\)が与えられているため、資産額\(W\)の期待値は、

期待値の性質として、次のことが知られている。 \[ E[ax + b] = aE[x] + b \] したがって、資産額\(W\)は、\(W = 1000(1 + r)\)で計算される為、問題2.1より、 \[ E[1000(r + 1)] = 1000E[r] + 1000 \\ = 1000\times0.02 + 1000 \\ = 1020 \]

標準偏差の性質として、次のことが知られている。 \[ SD[aX + b] = |a|SD[X] \] したがって、資産額\(W\)は、\(W = 1000(1 + r)\)で計算されるため、問題2.1より、 \[ SD[1000(1+r)] = |1000|SD[r]\\ = 1000 \times 0.12 \\ = 120 \]

3.資産額\(W\)が540円から1500円の間に収まる確率をチェビシェフの不等式に基づいて評価せよ.

# チェビシェフの不等式の実数k [540円以下の場合]
k1 <- (540- w_mu)/w_sd

# チェビシェフの不等式 (1/k^2) [540円以下の場合]
cheb1 <- 1/k1^2

# チェビシェフの不等式の実数k [1500円以上の場合]
k2 <- (1500- w_mu)/w_sd

# チェビシェフの不等式 (1/k^2) [1500円以上の場合]
cheb2 <- 1/k2^2

チェビシェフの不等式より、確率変数\(X\)の期待値が\(\mu\)であり、標準偏差が\(\sigma\)であるとき、 任意の正の実数\(k > 0\)に対して、次が成り立つ。

\[ P(|X-\mu|\geq k\sigma) \leq \frac{1}{k^2} \] チェビシェフの不等式より、資産額が540円以下になる確率は、 \[ P(|X-\mu|\geq k\sigma) \leq \frac{1}{k^2} \\ P(|540- 1020|\geq 120k) \leq \frac{1}{k^2} \\ \]

\(k \leq -4\)より、

\[ P(|X-\mu|\geq k\sigma) \leq \frac{1}{(-4)^2} \\ P(|X-\mu|\geq k\sigma) \leq 0.0625 \]

同様に、資産額が1500円以上になる確率は、

\[ P(|X-\mu|\geq k\sigma) \leq \frac{1}{k^2} \\ P(|1500- 1020|\geq 120k) \leq \frac{1}{k^2} \\ \]

\(k \leq 4\)より、

\[ P(|X-\mu|\geq k\sigma) \leq \frac{1}{(4)^2} \\ P(|X-\mu|\geq k\sigma) \leq 0.0625 \]

したがって、資産額が540円から、1500円の間に収まる確率は、 \[ 1 -P(X \geq 1500) - P(X \geq 540) \\ = 1 - 0.0625 - 0.0625 \\ = 0.875\\ \]

百分率にすると、\(87.5\)%以下となる。

作図 (対数正規分布の場合)

library(ggplot2)
library(ggtext)

dnorm_limit <- function(x) {
  y <- dlnorm(x, mean = w_mu, sd = w_sd)
  y[x < 540 | x > 1500] <- NA
  return(y)
}

p <- ggplot(data.frame(x = c(w_mu - 600, w_mu + 600)), aes(x = x))
 
p + 
  stat_function(fun = dnorm_limit, geom = "area", fill = "blue", alpha = 0.2) +
  stat_function(fun = dlnorm, args = list(mean = w_mu, sd = w_sd), n = 400, size = 0.1) +
  scale_x_continuous(breaks = seq(400, 1600, by = 100), expand = c(0, 0)) +
  scale_y_continuous(expand = c(0, 0)) +
  labs(title = expression(paste(W, "~", LN(mu, sigma), by = " ")),
       subtitle = "青色で塗られた部分が資産額540円から1500円の間に収まる確率である",
       x = "資産額(W)",
       y = expression(paste(f[W](w)))) +
  theme(plot.titile = element_text(size = 32),
        plot.subtitle = element_text(size = 24),
        text = element_text(family = "PT Sans caption", size = 18)) +
  theme_minimal()