【MT4&MQL】 MetaTrader 4 Build 600 リリース

MT5がなかなか普及していませんが、そんな状況のなかMT4が大幅にアップデートされました。

言語仕様と統合開発環境(IDE)がずいぶん現代的になったように思います。
まだ実際には使っていませんが、メタエディターがデバッグ(ステップ実行)やプロファイリングに対応しました。

しかし、バックテストのマルチスレッド対応や並列分散処理対応はなし・・・、残念です。
せめてマルチスレッドには対応してほしかったところです。

【Rでアイスクリーム統計学】 9章 因子分析(2)

Rでアイスクリーム統計学シリーズの9回目は因子分析の続きです。
chap8_2.txt

## 9章 因子分析(2)
data <- read.table("chap8_2.txt")
data

install.packages("psych")
install.packages("GPArotation")
library(psych)
library(GPArotation)

# 因子得点係数(バリマックス回転後)
fa(r=data, nfactors=4, rotate="varimax", fm="wls")$weights

# 因子得点係(バリマックス回転後)
fa(r=data, nfactors=4, rotate="varimax", fm="wls")$scores

## 通過テスト
scores <- fa(r=data, nfactors=4, rotate="varimax", fm="wls")$scores
colMeans(scores[1:40, ])
sapply(data.frame(scores[1:40, ]), sd)
colMeans(scores[41:80, ])
sapply(data.frame(scores[41:80, ]), sd)

【Rでアイスクリーム統計学】 8章 因子分析(1)

Rでアイスクリーム統計学シリーズの8回目は因子分析です。
chap8.txt

## 8章 因子分析(1)
data <- read.table("chap8.txt")
data
names(data) <- c("マカダミアナッツ", "チョコレート", "ウォールナッツ", "チョコチップ")

# 相関行列
cor(data)

# 固有値
eigen(cor(data))$values

install.packages("psych")
install.packages("GPArotation")
library(psych)
library(GPArotation)

# 因子負荷量(回転前)
fa(r=data, nfactors=2, rotate="none", fm="wls")$loadings

# 因子負荷量(バリマックス回転後)
fa(r=data, nfactors=2, rotate="varimax", fm="wls")$loadings

## 通過テスト
data <- read.table("chap8_2.txt")
data
names(data) <- c("ミルクティー", "マカダミアナッツ", "クッキー", "チョコレート", "アーモンド", "ミント", "キャラメル", "ウォールナッツ", "チョコチップ", "抹茶", "マロン", "チョコミント", "あずき")

# 相関行列
cor(data)

# 固有値
eigen(cor(data))$values

# 因子負荷量(回転前)
fa(r=data, nfactors=4, rotate="none", fm="wls")$loadings

# 因子負荷量(バリマックス回転後)
fa(r=data, nfactors=4, rotate="varimax", fm="wls")$loadings

【Rでアイスクリーム統計学】 7章 相関行列

Rでアイスクリーム統計学シリーズの7回目は相関行列です。
chap7.txt

## 7章 相関行列
data <- read.table("chap7.txt")

cor(data)

## 通過テスト
result <- data.frame(cor(data))
result <- sapply(result, round, 3)
result[result < 0.4] <- ""
result[result == 1] <- ""
edit(result)

result <- data.frame(cor(data))
result <- sapply(result, round, 3)
result[result > -0.2] <- ""
result[result == 1] <- ""
edit(result)

【Rでアイスクリーム統計学】 6章 重相関

Rでアイスクリーム統計学シリーズの6回目は重相関です。


## 6章 重回帰
最高気温a <- c(33, 33, 34, 34, 35, 35, 34, 32, 28, 35, 33, 28, 32, 25, 28, 30, 29, 32, 34, 35)
最低気温b <- c(22, 26, 27, 28, 28, 27, 28, 25, 24, 24, 26, 25, 23, 22, 21, 23, 23, 25, 26, 27)
客数y <- c(382, 324, 338, 317, 341, 360, 339, 329, 218, 402, 342, 205, 368, 196, 304, 294, 275, 336, 384, 368)

# 相関係数
ray <- cor(最高気温a, 客数y)
rby <- cor(最低気温b, 客数y)
rab <- cor(最高気温a, 最低気温b)

# 最低気温と客数の偏回帰係数
偏回帰係数by <- (rby - (ray * rab)) / (1 - rab^2) * (sd(客数y) / sd(最低気温b))

# 最低気温と客数の標準偏回帰係数
標準偏回帰係数by <- (rby - (ray * rab)) / (1 - rab^2)

# 最高気温と客数の偏回帰係数
偏回帰係数ay <- (ray - (rby * rab)) / (1 - rab^2) * (sd(客数y) / sd(最高気温a))

# 回帰直線の定数m
定数m <- mean(客数y) - 偏回帰係数ay * mean(最高気温a) - 偏回帰係数by * mean(最低気温b)

# 予測値
予測値 <- 偏回帰係数ay * 最高気温a + 偏回帰係数by * 最低気温b + 定数m
plot(客数y, 予測値, pch=18, xlim=c(100, 500), ylim=c(100, 500), main="実際の客数と重回帰予測値の関係", xlab="実際の客数", ylab="重回帰予測値")

# 重相関係数
sqrt((ray^2 + rby^2 - 2 * ray * rby * rab) / (1 - rab^2))

# (別解) 客数と予測値の相関係数から重相関係数
cor(客数y, 予測値)

## 通過テスト
高校a <- c(5.7, 6.8, 6.2, 5.5, 6.0, 7.3, 7.6, 7.3, 5.6, 7.6, 6.5, 7.8, 6.8, 7.5, 8.2, 7.8, 7.5, 7.2, 8.8)
入試b <- c(440, 448, 455, 460, 473, 485, 489, 500, 512, 518, 528, 550, 582, 569, 585, 593, 620, 650, 690)
成績y <- c(1.57, 1.83, 2.05, 1.14, 2.73, 1.65, 2.02, 2.98, 1.79, 2.63, 2.08, 2.15, 3.44, 3.05, 3.19, 3.42, 3.87, 3.00, 3.12)

ray <- cor(高校a, 成績y)
rby <- cor(入試b, 成績y)
rab <- cor(高校a, 入試b)

# 偏回帰係数
偏回帰係数ay <- (ray - (rby * rab)) / (1 - rab^2) * (sd(成績y) / sd(高校a))
偏回帰係数by <- (rby - (ray * rab)) / (1 - rab^2) * (sd(成績y) / sd(入試b))

# 回帰直線の定数m
定数m <- mean(成績y) - 偏回帰係数ay * mean(高校a) - 偏回帰係数by * mean(入試b)

# 重回帰係数
sqrt((ray^2 + rby^2 - 2 * ray * rby * rab) / (1 - rab^2))

【Rでアイスクリーム統計学】 5章 偏相関

Rでアイスクリーム統計学シリーズの5回目は偏相関です。


## 5章 偏相関
最高気温 <- c(33, 33, 34, 34, 35, 35, 34, 32, 28, 35, 33, 28, 32, 25, 28, 30, 29, 32, 34, 35)
最低気温 <- c(22, 26, 27, 28, 28, 27, 28, 25, 24, 24, 26, 25, 23, 22, 21, 23, 23, 25, 26, 27)
客数 <- c(382, 324, 338, 317, 341, 360, 339, 329, 218, 402, 342, 205, 368, 196, 304, 294, 275, 336, 384, 368)

plot(最低気温, 客数, pch=18, xlim=c(20, 30), ylim=c(0, 500), main="最低気温と客数の関係")

rby <- cor(最低気温, 客数)

t値 <- (rby * sqrt(length(客数) - 2)) / sqrt(1 - rby^2)
pt(q=t値, df=length(客数) - 2, lower.tail=F) * 2

ray <- cor(最高気温, 客数)
rab <- cor(最高気温, 最低気温)

# 最高気温の影響を取り除いた最低気温と客数の偏相関
(rby - ray * rab) / (sqrt(1 - ray^2) * sqrt(1 - rab^2))

# 最低気温の影響を取り除いた最高気温と客数の偏相関
(ray - rby * rab) / (sqrt(1 - rby^2) * sqrt(1 - rab^2))

## 通過テスト
高校a <- c(5.7, 6.8, 6.2, 5.5, 6.0, 7.3, 7.6, 7.3, 5.6, 7.6, 6.5, 7.8, 6.8, 7.5, 8.2, 7.8, 7.5, 7.2, 8.8)
入試b <- c(440, 448, 455, 460, 473, 485, 489, 500, 512, 518, 528, 550, 582, 569, 585, 593, 620, 650, 690)
成績y <- c(1.57, 1.83, 2.05, 1.14, 2.73, 1.65, 2.02, 2.98, 1.79, 2.63, 2.08, 2.15, 3.44, 3.05, 3.19, 3.42, 3.87, 3.00, 3.12)

ray <- cor(高校a, 成績y)
rby <- cor(入試b, 成績y)
rab <- cor(高校a, 入試b)
(rby - ray * rab) / (sqrt(1 - ray^2) * sqrt(1 - rab^2))

【Rでアイスクリーム統計学】 4章 単回帰

Rでアイスクリーム統計学シリーズの4回目は単回帰分析です。

2変数のデータから単回帰線を求めます。


## 4章 単回帰
最高気温 <- c(33, 33, 34, 34, 35, 35, 34, 32, 28, 35, 33, 28, 32, 25, 28, 30, 29, 32, 34, 35)
客数 <- c(382, 324, 338, 317, 341, 360, 339, 329, 218, 402, 342, 205, 368, 196, 304, 294, 275, 336, 384, 368)

plot(最高気温, 客数, pch=18, xlim=c(20, 40), ylim=c(0, 500), main="最高気温と客数の関係")

傾き <- cor(最高気温, 客数) * (sd(客数) / sd(最高気温))
切片 <- mean(客数) - 傾き * mean(最高気温)

abline(切片, 傾き)

# (別解) lm関数による単回帰分析
単回帰 <- lm(客数 ~ 最高気温)
summary(単回帰)

plot(最高気温, 客数, pch=18, xlim=c(20, 40), ylim=c(0, 500), main="最高気温と客数の関係")
abline(単回帰)

## 応用編
距離 <- c(10, 1200, 500, 50, 740, 30, 10, 360, 150, 930, 620, 65)
客数 <- c(795, 213, 465, 694, 403, 782, 769, 561, 692, 361, 385, 723)

plot(距離, 客数, pch=18, xlim=c(0, 1500), ylim=c(0, 1000), main="駅からの距離による平均客数", xlab="駅からの距離(m)", ylab="平均客数")

傾き <- cor(距離, 客数) * (sd(客数) / sd(距離))
切片 <- mean(客数) - 傾き * mean(距離)

abline(切片, 傾き)

# (別解) lm関数による単回帰分析
単回帰 <- lm(客数 ~ 距離)
summary(単回帰)

plot(距離, 客数, pch=18, xlim=c(0, 1500), ylim=c(0, 1000), main="駅からの距離による平均客数", xlab="駅からの距離(m)", ylab="平均客数")
abline(単回帰)

## 通過テスト
点数 <- c(440, 448, 455, 460, 473, 485, 489, 500, 512, 518, 528, 550, 582, 569, 585, 593, 620, 650, 690)
成績 <- c(1.57, 1.83, 2.05, 1.14, 2.73, 1.65, 2.02, 2.98, 1.79, 2.63, 2.08, 2.15, 3.44, 3.05, 3.19, 3.42, 3.87, 3.00, 3.12)

plot(点数, 成績, pch=18, xlim=c(400, 700), ylim=c(1, 4), main="入学試験の点数と学業成績", xlab="入学試験の点数", ylab="学業成績")

傾き <- cor(点数, 成績) * (sd(成績) / sd(点数))
切片 <- mean(成績) - 傾き * mean(点数)

abline(切片, 傾き)

# (別解) lm関数による単回帰分析
単回帰 <- lm(成績 ~ 点数)
summary(単回帰)

plot(点数, 成績, pch=18, xlim=c(400, 700), ylim=c(1, 4), main="入学試験の点数と学業成績", xlab="入学試験の点数", ylab="学業成績")
abline(単回帰)

【Rでアイスクリーム統計学】 3章 無相関検定

Rでアイスクリーム統計学シリーズの3回目は無相関検定です。

相関係数を検定してみましょう。

## 3章 無相関検定
年齢 <- c(18, 20, 22, 19, 21, 23, 17, 13, 22, 24, 21, 15, 19, 17, 20, 16, 21, 26, 18, 19)
来店回数 <- c(8, 8, 7, 6, 6, 5, 7, 3, 6, 5, 6, 2, 7, 5, 7, 4, 6, 4, 5, 7)

# 散布図
plot(年齢, 来店回数, pch=18, xlim=c(10, 30), ylim=c(0, 10), main="年齢による1ヶ月当たりの来店回数")

# 相関係数
相関係数 <- cor(年齢, 来店回数)

# 無相関検定
t値 <- (相関係数 * sqrt(length(年齢) - 2)) / sqrt(1 - 相関係数^2)
pt(q=t値, df=length(年齢) - 2, lower.tail=F) * 2

# (別解) cor.test関数による無相関検定
cor.test(年齢, 来店回数)

## 通過テスト
点数 <- c(440, 448, 455, 460, 473, 485, 489, 500, 512, 518, 528, 550, 582, 569, 585, 593, 620, 650, 690)
成績 <- c(1.57, 1.83, 2.05, 1.14, 2.73, 1.65, 2.02, 2.98, 1.79, 2.63, 2.08, 2.15, 3.44, 3.05, 3.19, 3.42, 3.87, 3.00, 3.12)

# 相関係数
相関係数 <- cor(点数, 成績)

# 無相関検定
t値 <- (相関係数 * sqrt(length(点数) - 2)) / sqrt(1 - 相関係数^2)
pt(q=t値, df=length(点数) - 2, lower.tail=F) * 2

# (別解) cor.test関数による無相関検定
cor.test(点数, 成績)

【統計検定】 Web合格発表

11月17日に実施された試験のWeb合格発表がありました。

自分は2級を受けましたが、結果は合格でした。
成績優秀者ではありませんでしたが、とりあえずよかったです。

受験者数も前年の約2倍に増えていますね。

さて来年は1級にチャレンジしようと思いますが、過去問を見てもさっぱり分かりません。
今回の1級の合格率は15%を切っていて、合格者数もわずか32人です。
うーん、相当がんばらないと。

【Rでアイスクリーム統計学】 2章 相関係数

Rでアイスクリーム統計学シリーズの2回目は相関係数です。

2変数の相関係数を求めてみましょう。

## 2章 相関係数
気温 <- c(29, 29, 30, 32, 33, 32, 31, 26, 28, 31)
客数 <- c(326, 364, 283, 369, 417, 436, 438, 296, 263, 389)

plot(気温, 客数, pch=18, xlim=c(25, 35), ylim=c(200, 500), main="この店における気温と客数の関係(平日のみ)")

気温X <- c(29, 30, 29, 32, 33, 27, 28, 32, 34, 32)
客数X <- c(312, 348, 284, 369, 420, 275, 294, 368, 451, 405)

plot(気温X, 客数X, pch=18, xlim=c(25, 35), ylim=c(200, 500), main="X店における気温と客数の関係(平日のみ)", xlab="気温", ylab="客数")

サイズ <- length(気温) - 1
共分散 <- sum((気温 - mean(気温)) * (客数 - mean(客数))) / サイズ
気温SD <- sqrt(sum((気温 - mean(気温))^2) / サイズ)
客数SD <- sqrt(sum((客数 - mean(客数))^2) / サイズ)
相関係数 <- 共分散 / (気温SD * 客数SD)

サイズX <- length(気温X) - 1
共分散X <- sum((気温X - mean(気温X)) * (客数X - mean(客数X))) / サイズX
気温SDX <- sqrt(sum((気温X - mean(気温X))^2) / サイズX)
客数SDX <- sqrt(sum((客数X - mean(客数X))^2) / サイズX)
相関係数X <- 共分散X / (気温SDX * 客数SDX)

# (別解) cov関数とsd関数による相関係数の算出
cov(気温, 客数) / (sd(気温) * sd(客数))
cov(気温X, 客数X) / (sd(気温X) * sd(客数X))

# (別解) cor関数による相関係数の算出
cor(気温, 客数)
cor(気温X, 客数X)

## 応用編
距離 <- c(10, 1200, 500, 50, 740, 30, 10, 360, 150, 930, 620, 65)
客数 <- c(795, 213, 465, 694, 403, 782, 769, 561, 692, 361, 385, 723)

サイズ <- length(距離) - 1
共分散 <- sum((距離 - mean(距離)) * (客数 - mean(客数))) / サイズ
距離SD <- sqrt(sum((距離 - mean(距離))^2) / サイズ)
客数SD <- sqrt(sum((客数 - mean(客数))^2) / サイズ)
相関係数 <- 共分散 / (距離SD * 客数SD)

# (別解) cov関数とsd関数による相関係数の算出
cov(距離, 客数) / (sd(距離) * sd(客数))

# (別解) cor関数による相関係数の算出
cor(距離, 客数)

## 通過テスト
点数 <- c(440, 448, 455, 460, 473, 485, 489, 500, 512, 518, 528, 550, 582, 569, 585, 593, 620, 650, 690)
成績 <- c(1.57, 1.83, 2.05, 1.14, 2.73, 1.65, 2.02, 2.98, 1.79, 2.63, 2.08, 2.15, 3.44, 3.05, 3.19, 3.42, 3.87, 3.00, 3.12)

サイズ <- length(点数) - 1
共分散 <- sum((点数 - mean(点数)) * (成績 - mean(成績))) / サイズ
点数SD <- sqrt(sum((点数 - mean(点数))^2) / サイズ)
成績SD <- sqrt(sum((成績 - mean(成績))^2) / サイズ)
相関係数 <- 共分散 / (点数SD * 成績SD)

# (別解) cov関数とsd関数による相関係数の算出
cov(点数, 成績) / (sd(点数) * sd(成績))

# (別解) cor関数による相関係数の算出
cor(点数, 成績)