# ーーー【ランダムな誤差を可視化する】ーーー
#【0】直線「y = x」に正規分布誤差を付加する
# 区間 [-1, +1] からランダムに100個の変数値を選ぶ(定義域)
n <- 100
x <- runif(n, min = -1, max = 1)
# ランダム誤差がない場合
y <- x
plot(x, y)
# ランダム誤差:正規分布 N(0, 0.05)
y <- x + rnorm(n, 0, 0.05)
plot(x, y)
# ランダム誤差:正規分布 N(0, 0.1)
y <- x + rnorm(n, 0, 0.1)
plot(x, y)
# ランダム誤差:正規分布 N(0, 0.5)
y <- x + rnorm(n, 0, 0.5)
plot(x, y)
# 四つのグラフを並べて描く(1)
par(mfrow=c(2,2))
n <- 100
x <- runif(n, min = -1, max = 1)
y <- x; plot(x, y)
y <- x + rnorm(n, 0, 0.05); plot(x, y)
y <- x + rnorm(n, 0, 0.1); plot(x, y)
y <- x + rnorm(n, 0, 0.5); plot(x, y)
par(mfrow=c(1,1))
# 四つのグラフを並べて描く(2)
par(mfrow=c(2,2))
n <- 100
x <- runif(n, min = -1, max = 1)
y <- x; plot(x, y);
curve(identity, -1, 1, add=T, col="red")
y <- x + rnorm(n, 0, 0.05); plot(x, y);
curve(identity, -1, 1, add=T, col="red")
y <- x + rnorm(n, 0, 0.1); plot(x, y);
curve(identity, -1, 1, add=T, col="red")
y <- x + rnorm(n, 0, 0.5); plot(x, y);
curve(identity, -1, 1, add=T, col="red")
par(mfrow=c(1,1))
# 抽出サンプル数を変える
par(mfrow=c(2,2))
x <- runif(10, min = -1, max = 1)
y <- x + rnorm(10, 0, 0.3); plot(x, y)
x <- runif(50, min = -1, max = 1)
y <- x + rnorm(50, 0, 0.3); plot(x, y)
x <- runif(100, min = -1, max = 1)
y <- x + rnorm(100, 0, 0.3); plot(x, y)
x <- runif(1000, min = -1, max = 1)
y <- x + rnorm(1000, 0, 0.3); plot(x, y)
par(mfrow=c(1,1))
#【1】直線「y = x」に正規分布誤差を付加する
n <- 100
x <- runif(n, min = -1, max = 1)
y <- x + rnorm(n, 0, 0.04)
plot(x, y)
#【2】曲線「y = 1 - x^2」に正規分布誤差を付加する
n <- 100
x <- runif(n, min = -1, max = 1)
y <- (1 - x^2) + rnorm(n, 0, 0.04)
plot(x, y)
#【3】曲線「y = 1 - x + x^3」に正規分布誤差を付加する
n <- 100
x <- runif(n, min = -1, max = 1)
y <- (1 - x + x^3) + rnorm(n, 0, 0.04)
plot(x, y)
#【4】曲線「y = (x - 0.9)*(x - 0.6)*(x - 0.1)*(x + 0.3)*(x + 1)」に正規分布誤差を付加する
n <- 100
x <- runif(n, min = -1, max = 1)
y <- (x - 0.9)*(x - 0.6)*(x - 0.1)*(x + 0.3)*(x + 1) + rnorm(n, 0, 0.04)
plot(x, y)
# 四つのグラフを並べて描く(1)
par(mfrow=c(2,2))
n <- 100
x <- runif(n, min = -1, max = 1)
y <- x + rnorm(n, 0, 0.05); plot(x, y)
y <- (1 - x^2) + rnorm(n, 0, 0.05); plot(x, y)
y <- (1 - x + x^3) + rnorm(n, 0, 0.05); plot(x, y)
y <- (x - 0.9)*(x - 0.6)*(x - 0.1)*(x + 0.3)*(x + 1) + rnorm(n, 0, 0.05); plot(x, y)
par(mfrow=c(1,1))
# 四つのグラフを並べて描く(2)
par(mfrow=c(2,2))
n <- 100
x <- runif(n, min = -1, max = 1)
y <- x + rnorm(n, 0, 0.05); plot(x, y);
curve(identity, -1, 1, add=T, col="red")
y <- (1 - x^2) + rnorm(n, 0, 0.05); plot(x, y);
curve(1 - x^2, -1, 1, add=T, col="red")
y <- (1 - x + x^3) + rnorm(n, 0, 0.05); plot(x, y);
curve(1 - x + x^3, -1, 1, add=T, col="red")
y <- (x - 0.9)*(x - 0.6)*(x - 0.1)*(x + 0.3)*(x + 1) + rnorm(n, 0, 0.05); plot(x, y);
curve((x - 0.9)*(x - 0.6)*(x - 0.1)*(x + 0.3)*(x + 1), -1, 1, add=T, col="red")
par(mfrow=c(1,1))