デジタル・デザイン・ラボラトリーな日々

アラフィフプログラマーが数学と物理と英語を基礎からやり直す。https://qiita.com/yaju

MacBook Proのローン返済が終わりました

2年前に購入したMacBook Pro関連のローン返済がやっと終わりました。  

yaju3d.hatenablog.jp

毎月 17,082円でしたが、この2年の間に自宅の電気代の支払いが父親から自分に切り替わったのも痛かったですね。電気代も年間で平均すると月2万円くらいになります。

欲しかった、新しいiPhone、Nintendo Switch、PS 5、Oculus Quest 2 などはずっと延ばしてました。
もともとゲームとかはやる方でないのでゲーム機はまだいいとして、メタバースが話題になっているから Oculus Quest 2 は購入したいですね。
ただ、今はブランドが Meta Quest に変わる段階なので、もう少し後でもいいかな。

海外ドラマのフレンズを英語字幕・日本語字幕を同時表示して視聴する方法

はじめに

新年明けましておめでとうございます。2022年最初の記事となります。
ここしばらくはQiitanoteに記事を書いており、はてなに記事を書いていませんでした。今年は月1くらいで何か書いていこうと思います。

新年早々、Netflexに加入しまして話題になっている「イカゲーム」や「浅草キッド」などを楽しんでいました。
1月4日にYouTubeで下記の動画を視聴しました。

この中で英語の勉強に一番いいのは「フレンズ」見る事とオリラジ中田さんが言っているんですよね。
以前からネットとかで海外ドラマのフレンズが英語の勉強にいいという噂は耳にしていたので、今回は素直にやってみようと思った次第です。   Amazonプライムで観れるかと思ったのですが、すでに有料となっていました。Netflexでは今でも観れることが分かりました。これはちょうど良い。

視聴方法

フレンズは1話あたり22分でシーズン1〜10まであり、全部で236話あるそうです。1日1話ずつ観ても8ヶ月くらいかかります。
フレンズの脚本のスクリプトも見ることができます。ただし、日本語訳はついていません。

dramadeenglish.com

reigo-english.com

英語音声の日本語字幕で見ています。
外部ディスプレイにフレンズを表示しつつ、Mac Bookでスクリプトを追いながら見ていました。
当然ですが、だんだん面倒臭くなってきました。

Chrome拡張の「Language Reactor」

何かいい方法がないかとネット検索して見つけたのが、 Chrome拡張の「Language Reactor」です。   「Language Reactor」とは、一言で言えば動画に英語字幕と日本語字幕を同時に表示できるツールのことです。

これを使うことで動画に英語字幕・日本語字幕を同時表示されるんで、別画面でスクリプトを見ながらなんてしなくてもいいんですよ。 シャドーイングだってしやすいんです。

詳しくは下記サイトを見てください。

english06.com

redappletranslation.com

使い始めたばかりでYouTubuとかでも常に字幕が出てしまって、毎回字幕ボタンをオフにするのが難点ですが、これも何かしら改善方法があるかと思います。

最後に

とりあえず今年は英語耳を作れるようになればいいかなと、毎日1話ずつ見ています。
今まで同様に瞬間英作文は地道に繰り返しやっています。
残りは単語と熟語を覚えるとかっていうのを何もしていないので、今年はこちらも力を入れていきます。

【Windows】Kindle FireタブレットでGoogle Playストアをインストールする

はじめに

久しぶりにはてなで記事を書きます。しばらくQiitaで記事を書いていてこっちはサボってました。

2016年01月19日にKindle Fireが届いて、2016年04月29日にとあるサイトを参考にGoogle Playストアをインストールしました。しばらくすると使用できなくなり、2016年11月27日 に再度アンインストールしてインストールし直しおすことで使用できるようになったのですが、また同じことが続くのでだんだん面倒くさくなり放置。

最近フレキシブルアームを購入しまして、これをベッドに配置して寝ながらスマホやタブレットを使用できるようにしました。

これで以前インストールしていた、TVerアプリで観ようとしても設定を読み込み中で再生できません。TVerアプリをインストールし直しても駄目でした。久しぶりにGoogle Playストアから再インストールし直すことにしましたので、今回はその備忘録になります。

環境

  • Windows 11 Home 64bit プレビュー版 ※MacのParallels Desktop 16 Pro Edition上で使用
  • Kindle Fire(第5世代) OS 5.6.0.0

Google Playストアのインストール

以前、参考にしていたサイトは2015年の記事であるため、検索し直しました。
基本的にこの記事の通りなのですが、躓いた部分があったのでその部分を書いていきます。

androidlover.net

「Amazon-Fire-5th-Gen-Install-Play-Store.zip」をダウンロードして、C:¥Toolフォルダに展開する。
※ダウンロードフォルダにそのまま展開した場合、日本語フォルダの問題と思われるが「No such file or directory」になってしまいます。

USBデバッグ(ADB)を有効にする

タブレット端末にて設定-開発者向けオプション-USBデバッグモードをONにするには、『シリアル番号』と書かれている場所を7回タップ

  1. ホーム画面にある『設定』を選択
  2. 『端末オプション』を選択
  3. 『シリアル番号』と書かれている場所を7回タップ。
  4. 7回タップを終えるとシリアル番号の下に『開発者オプション』が表示される
  5. 開発者オプションの一覧にある『ADBを有効にする』のチェックをONにする

sannlog.com

daemon not running; starting now at tcp:5037

初回はたいてい表示されます。この次の行に daemon started successfully があればOKです。

adbコマンドを使用可能にする

Amazon-Fire-5th-Gen-Install-Play-Storeフォルダ内の「1-Install-Play-Store.bat」をダブルクリックすると「adb 内部コマンドまたは外部コマンド 認識されていません」のエラーが出ていました。
下記サイトを参考に「platform-tools」をC:¥Toolフォルダにコピーした上で環境パスを設定、Powershell上でadoコマンドが使用できるのを確認しました。

www.orefolder.net

Google Playストアに必要な4つのアプリのインストール

これで、Amazon-Fire-5th-Gen-Install-Play-Storeフォルダ内の「1-Install-Play-Store.bat」をダブルクリックしても、adbコマンドのエラーは出なくなりました。

  1. メニューの「Please make a selection or hit ENTER to exit:」の部分に「2」と入力してEnterキーを押す
  2. Google Playストアに必要な4つのアプリのインストール開始
  3. アプリのインストールが終了「all apps installed and permissions set.」と表示される
  4. Fireタブレットのアプリ一覧にGoogle設定アプリとともにGoogle Playストアもインストールされる

Google Playストアの起動とアプリインストール

Googleアカウントの追加画面は、以前の情報が残っていたのでアカウント情報を入力はしていません。

Google Playストアを起動して、Google Play開発者サービス 、TVerアプリやYoutubeアプリやChromeアプリなどをインストールしました。

最後に

これでベッドで寝ながらKindle Fireタブレットで、動画や読書などが楽しめそうです。

寝る前に動画を観たりすると寝付けないのではないかと思われるかも知れません。一応プロジェクターではないですが、フレキシブルアームで上を向く状態にしているので逆に寝落ちしやすいかも。

togetter.com

ニューラルネットワーク上の重みと閾値の変数の数

はじめに

図書館に寄った時に「Excelでわかる機械学習 超入門」と「Excelでわかるディープラーニング超入門」という本を見つけたので、借りてきました。
後で気がついたのですが、「Excelでわかるディープラーニング超入門」については、2018/10/27にKindle版を既に購入済みでした。

5章-3に「重みと閾値は、こんな簡単な例題でも計47個あります。」と記載があったのですが、説明がなくてどうやって47個が求まるのか分からなかった。
5章-4の「誤差伝搬法をExcelで体験」のところにExcelの表示があって、重みと閾値を数えたら47個あることが分かった。
一応、悩んだりしたので記事にしておく。

例題

4x3画素の白黒2値画像として読み取った手書き数字「0」、「1」を識別するニューラルネットワークを作成しましょう。学習用画像データは55枚とします。

重みと閾値の数

入力層に4x3画素の12個、隠れ層が3つ、出力層が2つの構成となっています。

f:id:Yaju3D:20210412011343p:plain

各隠れ層に重み12個と閾値が1つ、各出力層に重み3つ閾値が1つ
(12+1) \times  3 + (3+1) \times 2 = 47

f:id:Yaju3D:20210412011538p:plain

最後に

自分の場合、機械学習の勉強って細かいところに躓いてしまって、なかなか先に進まないんだよな。

機械学習の勉強再開 使用データ寄与の確認

はじめに

以前、使用データの解析をして「Grate」と「Crate」と「Prate」のデータの求め方が分かりました。
yaju3d.hatenablog.jp

出来れば使用するデータは最小限にしたいので、「Grate」と「Crate」と「Prate」が結果に寄与(意味がある?)しているのかを検証します。

使用データの意味

このサザエさんじゃんけんの使用データは、もともと下記サイトのYukiさんが考案したものです。

使用するデータは「2017sze.csv」になります。各列の内容は次の通りです。
X:サザエさんの出した手
X1:サザエさんが1回前に出した手
X2:サザエさんが2回前に出した手
X3:サザエさんが3回前に出した手
Q:四半期初の場合は1、それ以外は0
Grate:グーチョキパーが四半期内で均等に出ると仮定した場合のグーの出やすさ
Crate:グーチョキパーが四半期内で均等に出ると仮定した場合のチョキの出やすさ
Prate:グーチョキパーが四半期内で均等に出ると仮定した場合のパーの出やすさ
機械学習でサザエさんと本気でじゃんけんしてみた① - アクチュアリーはデータサイエンスの夢を見るか?

ソースコードの変更

yaju3d.hatenablog.jp

前回のソースコードでは最後の日付のみが削除されていましたが、今回はGrateとCrateとPrateと日付を削除します。

sze = sze_row.iloc[:, :-1]
# ↓  GrateとCrateとPrateと日付を削除
sze = sze_row.iloc[:, :-4]

結果の見方

f:id:Yaju3D:20210104100225p:plain

行(たて)が正解(実際に出された手)、列(よこ)が予測となります。
機械学習では出す手を予測するので勝ち手を選んだことにして勝敗を出しています。※勝ち手を選んだとこまでは現状でプログラムを組んでいません。

  • 黄色セルは、例えばチョキ(C)を出すと予測して勝ち手のグー(G)出した、実際に出された手はチョキ(C)なので勝ちになります。
  • 赤色セルは、例えばチョキ(C)が出ると予測して勝ち手のグー(G)出した、実際に出された手はパー(P)なので負けとなります。
  • 白色セルは、例えばチョキ(C)が出ると予測して勝ち手のグー(G)出した、実際に出された手はグー(G)なので引き分けとなります。

線形SVM

0.6666666666666666

C G P
C 13 2 2
G 2 9 4
P 5 1 10

32勝11敗5分け

RBFカーネル

0.7083333333333334

C G P
C 11 3 3
G 0 13 2
P 4 2 10

34勝9敗5分け

決定木

0.7083333333333334

C G P
C 11 3 3
G 0 13 2
P 4 2 10

34勝9敗5分け

ランダムフォレスト

C G P
C 11 3 3
G 0 13 2
P 4 2 10

34勝9敗5分け

ナイーブベイズ

0.6666666666666666

C G P
C 6 7 4
G 0 13 2
P 0 3 13

32勝9敗7分け

最終結果

種類 今回使用データ版勝敗 前回使用データ版勝敗
線形SVM 32勝11敗5分け(勝率0.744) 32勝11敗5分(勝率0.744)
RBFカーネル 34勝9敗5分け(勝率0.790) 34勝9敗5分け(勝率0.790)
決定木 34勝9敗5分け(勝率0.790) 29勝7敗12分け(勝率0.805)
ランダムフォレスト 34勝9敗5分け(勝率0.790) 29勝8敗11分け(勝率0.783)
ナイーブベイズ 32勝9敗7分け(勝率0.780) 31勝10敗7分け(勝率0.756)

最後に

結果だけ見ると「Grate」と「Crate」と「Prate」のデータは結果に寄与してないようです。
逆に存在することで結果が悪くなってしまっていました。

次は久しぶりにTensorFlowでDeepLearningとして組んでみます。

機械学習の勉強再開 RBFカーネル 、決定木、ランダムフォレスト、ナイーブベイズ

はじめに

前回、線形SVMをやりましたので今回は他の方法(RBFカーネル 、決定木、ランダムフォレスト、ナイーブベイズ)をやっていきます。

結果の見方

f:id:Yaju3D:20210104100225p:plain

行(たて)が正解(実際に出された手)、列(よこ)が予測となります。
機械学習では出す手を予測するので勝ち手を選んだことにして勝敗を出しています。※勝ち手を選んだとこまでは現状でプログラムを組んでいません。

  • 黄色セルは、例えばチョキ(C)を出すと予測して勝ち手のグー(G)出した、実際に出された手はチョキ(C)なので勝ちになります。
  • 赤色セルは、例えばチョキ(C)が出ると予測して勝ち手のグー(G)出した、実際に出された手はパー(P)なので負けとなります。
  • 白色セルは、例えばチョキ(C)が出ると予測して勝ち手のグー(G)出した、実際に出された手はグー(G)なので引き分けとなります。

線形SVM

yaju3d.hatenablog.jp

ソースコード

線形SVMのmodelのみをコメントアウトし、他はコメントにします。

# 線形SVM
model = svm.SVC(kernel='linear', C=2.5, max_iter=5000, random_state=3383)
# RBFカーネル
#model = svm.SVC(kernel="rbf", C=1.0, max_iter=5000, random_state=3383)
# 決定木
#model = DecisionTreeClassifier()
# ランダムフォレスト
#model = RandomForestClassifier(random_state=3383)
# ナイーブベイズ
#model = GaussianNB()

結果

0.6666666666666666

C G P
C 13 2 2
G 2 9 4
P 5 1 10

32勝11敗5分け

RBFカーネル

カーネル法は「データを別の特徴空間に移してから線形回帰を行う」という下図のイメージ

f:id:Yaju3D:20210215113826p:plain
RBFカーネル
www.shoeisha.co.jp

ソースコード

RBFカーネルのmodelのみをコメントアウトし、他はコメントにします。

ハイパーパラメータのデフォルトは、C=1.0, gamma= 1/特徴数 となっています。
今回は下手にハイパーパラメータをいじるよりデフォルトの方が結果が良かったです。

# 線形SVM
#model = svm.SVC(kernel='linear', C=2.5, max_iter=5000, random_state=3383)
# RBFカーネル
model = svm.SVC(kernel="rbf", C=1.0, max_iter=5000, random_state=3383)
# 決定木
#model = DecisionTreeClassifier()
# ランダムフォレスト
#model = RandomForestClassifier(random_state=3383)
# ナイーブベイズ
#model = GaussianNB()

結果

0.7083333333333334

C G P
C 11 3 3
G 0 13 2
P 4 2 10

34勝9敗5分け

決定木

決定木とは木構造を用いて分類や回帰を行う機械学習の手法 qiita.com

ソースコード

決定木のmodelのみをコメントアウトし、他はコメントにします。

# 線形SVM
#model = svm.SVC(kernel='linear', C=2.5, max_iter=5000, random_state=3383)
# RBFカーネル
#model = svm.SVC(kernel="rbf", C=1.0, max_iter=5000, random_state=3383)
# 決定木
model = DecisionTreeClassifier()
# ランダムフォレスト
#model = RandomForestClassifier(random_state=3383)
# ナイーブベイズ
#model = GaussianNB()

結果

0.6041666666666666

C G P
C 12 2 3
G 2 9 4
P 1 7 8

29勝7敗12分け

ランダムフォレスト

「三人寄れば文殊の知恵」ということわざを実現を体現するのがアンサンブル学習です。
ランダムフォレストとは、アンサンブル学習のバギングをベースに、少しずつ異なる決定木をたくさん集めたものです。決定木単体では過学習しやすいという欠点があり、ランダムフォレストはこの問題に対応する方法の1つです。
決定株、決定木、ランダム森、株が伸びると木になり、木が集まると森になります。 qiita.com

ソースコード

ランダムフォレストのmodelのみをコメントアウトし、他はコメントにします。

# 線形SVM
#model = svm.SVC(kernel='linear', C=2.5, max_iter=5000, random_state=3383)
# RBFカーネル
#model = svm.SVC(kernel="rbf", C=1.0, max_iter=5000, random_state=3383)
# 決定木
#model = DecisionTreeClassifier()
# ランダムフォレスト
model = RandomForestClassifier(random_state=3383)
# ナイーブベイズ
#model = GaussianNB()

結果

0.6041666666666666

C G P
C 10 3 4
G 1 11 3
P 2 6 8

29勝8敗11分け

ナイーブベイズ

Pythonでは3種類(ガウスモデル、ベルヌーイ分布、多項分布モデル)があるが、今回はガウスモデルを使用する。 qiita.com

ソースコード

ナイーブベイズのmodelのみをコメントアウトし、他はコメントにします。
Pythonでは3種類(ガウスモデル、ベルヌーイ分布、多項分布モデル)があるが。今回はガウスモデルを使用する。
その後、ガウスモデル以外もやってみたのですが、ベルヌーイ分布の結果はさほど良くなく、多項分布モデルはエラーで動作しませんでした。

# 線形SVM
#model = svm.SVC(kernel='linear', C=2.5, max_iter=5000, random_state=3383)
# RBFカーネル
#model = svm.SVC(kernel="rbf", C=1.0, max_iter=5000, random_state=3383)
# 決定木
#model = DecisionTreeClassifier()
# ランダムフォレスト
#model = RandomForestClassifier(random_state=3383)
# ナイーブベイズ
model = GaussianNB()

結果

0.6458333333333334

C G P
C 10 4 3
G 2 11 2
P 4 2 10

31勝10敗7分け

最終結果

種類 Python版勝敗 R言語版勝敗
線形SVM 32勝11敗5分け(勝率0.744) 32勝11敗5分(勝率0.744)
RBFカーネル 34勝9敗5分け(勝率0.790) 32勝9敗7分(勝率0.780)
決定木 29勝7敗12分け(勝率0.805) 32勝10敗6分(勝率0.761)
ランダムフォレスト 29勝8敗11分け(勝率0.783) 32勝9敗7分(勝率0.780)
ナイーブベイズ 31勝10敗7分け(勝率0.756) 33勝9敗6分(勝率0.785)

yaju3d.hatenablog.jp r-std.hatenablog.com

当時のブログによる2017年の結果も踏まえて比較してみます。

種類 勝敗
自作アルゴリズム 32勝9敗7分(勝率0.780)
研究所公式 29勝8敗11分(勝率0.783)

ソースコード

import pandas as pd
import numpy as np
import urllib.request
from io import StringIO
from sklearn import svm
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer
from sklearn.ensemble import RandomForestClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.naive_bayes import GaussianNB
import random

url = "https://raw.githubusercontent.com/yaju/Sazae_R/master/2017sze.csv"
# データの読み込み
res = urllib.request.urlopen(url)
res = res.read().decode("utf-8")
sze_row = pd.read_csv(StringIO(res), header=0)
sze = sze_row.iloc[:, :-1]

# One-hotエンコーディング
# sze = pd.get_dummies(sze, columns=['X1', 'X2', 'X3'])
# sze

ct = ColumnTransformer([('onehot', OneHotEncoder(sparse=False), [1,2,3])])
columns = ['X1_C', 'X1_G', 'X1_P',   'X2_C', 'X2_G', 'X2_P', 'X3_C', 'X3_G', 'X3_P']
df = pd.DataFrame(ct.fit_transform(sze), columns=columns)
sze = sze.drop(['X1', 'X2', 'X3'], axis=1)
sze = pd.concat([sze, df], axis=1)
#sze

#1992年~2016年までを学習用、2017年分をテスト用とする
train = range(0, 1253)
test = range(1254, 1302)

x_train = sze.iloc[train, 1:]
y_train = sze.iloc[train, 0]
x_test = sze.iloc[test, 1:]
y_test = sze.iloc[test, 0]
#y_train

# 分類器svm
#seedはサザエさん(3383)とする
# 線形SVM
#model = svm.SVC(kernel='linear', C=2.5, max_iter=5000, random_state=3383)
# RBFカーネル
model = svm.SVC(kernel="rbf", C=1.0, max_iter=5000, random_state=3383)
# 決定木
#model = DecisionTreeClassifier()
# ランダムフォレスト
#model = RandomForestClassifier(random_state=3383)
# ナイーブベイズ
#model = GaussianNB()

# 学習
model.fit(x_train, y_train) 

pred = model.predict(x_test)
tab = pd.crosstab(y_test, pred)
# 識別率
print(accuracy_score(y_test, pred))

tab
# print(y_test)
# print(pred)

最後に

勝数だけならRBFカーネルが圧倒的ですが、勝率だと決定木が一番となります。
何にしても機械学習の方が結果が良かったというのが一番の成果です。

次回はもう少し踏み込んだ検証をしていきます。

機械学習の勉強再開 使用データの解析

はじめに

前回、線形SVMの改善をしまして次の段階に行こうかなと思ったのですが・・・ yaju3d.hatenablog.jp

その前に下記の使用データがどうやって作成されているのかを調べておきたい。
https://raw.githubusercontent.com/yaju/Sazae_R/master/2017sze.csv

使用データの解析

このサザエさんじゃんけんの使用データは、もともと下記サイトのYukiさんが考案したものです。

使用するデータは「2017sze.csv」になります。各列の内容は次の通りです。
X:サザエさんの出した手
X1:サザエさんが1回前に出した手
X2:サザエさんが2回前に出した手
X3:サザエさんが3回前に出した手
Q:四半期初の場合は1、それ以外は0
Grate:グーチョキパーが四半期内で均等に出ると仮定した場合のグーの出やすさ
Crate:グーチョキパーが四半期内で均等に出ると仮定した場合のチョキの出やすさ
Prate:グーチョキパーが四半期内で均等に出ると仮定した場合のパーの出やすさ
機械学習でサザエさんと本気でじゃんけんしてみた① - アクチュアリーはデータサイエンスの夢を見るか?

この中で「Grate」と「Crate」と「Prate」のデータがありますが、これがどういう計算で 求められているのかを今度のために知る必要があります。

「四半期内で均等に出ると仮定した場合の出やすさ」という説明とデータの値を見ればなんとなくのイメージはつきます。 出る回数が同じなら3等分なので、0.333333333になり、何れかが出た場合は出やすさの値が減っていく。
イメージは分かるのですが、どうしたら下記のような数値になるのかが分かりませんでした。

X X1 X2 X3 Q Grate Crate Prate DATE
C G P G 1 0.333333333 0.333333333 0.333333333 1992/1/5
P C G P 0 0.361111111 0.277777778 0.361111111 1992/1/12
G P C G 0 0.393939394 0.303030303 0.303030303 1992/1/19
C G P C 0 0.333333333 0.333333333 0.333333333 1992/1/26
C C G P 0 0.37037037 0.259259259 0.37037037 1992/2/2
P C C G 0 0.416666667 0.166666667 0.416666667 1992/2/9
G P C C 0 0.476190476 0.19047619 0.333333333 1992/2/16
C G P C 0 0.388888889 0.222222222 0.388888889 1992/2/23
P C G P 0 0.466666667 0.066666667 0.466666667 1992/3/1
G P C G 0 0.583333333 0.083333333 0.333333333 1992/3/8
C G P C 0 0.444444444 0.111111111 0.444444444 1992/3/15
P C G P 0 0.666666667 -0.333333333 0.666666667 1992/3/22
G P C G 0 1.333333333 -0.666666667 0.333333333 1992/3/29

推測

このデータは四半期内(1月~3月)で13行x3=39個のデータがあります。
初回は出る回数が同じなら3等分なので、各13/39というのは直ぐに分かりました。
次行が難しく、0.277777778にどうしたらなるのか、イチかバチか「0.277777778」でググったら、5/18=0.277777778となることが分かりました。
それなら倍にすれば、10/36となります。なんとなくこの予想はあってそうです。
次行の 0.303030303は、10/33 になるのは直ぐに分かりました。

Grate Crate Prate
1 13/39 13/39 13/39
2     10/36    
3     10/33    

現時点で分かったのは上表で、これを見る限り分母と分子が3ずつ減っていることが分かりました。
次の展開として出た手を順にカウントしてみました。  

Grate Crate Prate
1 0 0 0
2 0 1 0
3 0 1 1
4 1 1 1
5 1 2 1
6 1 3 1
7 1 3 2
8 2 3 2
9 2 4 2
10 2 4 3
11 3 4 3
12 3 5 3
13 3 5 4

4行目は全部1となり使用データ上の数値でも0.333333333と均等になっていますし、全体的に出た手の件数と使用データの数値の割合的にあってそうです。
そこで分母は行毎に3減らし、分子は出た数だけ3減らすようにしていきました。

Grate Crate Prate
1 =(13-0*3)/39 =(13-0*3)/39 =(13-0*3)/39
2 =(13-0*3)/36 =(13-1*3)/36 =(13-0*3)/36
3 =(13-0*3)/33 =(13-1*3)/33 =(13-1*3)/33
4 =(13-1*3)/30 =(13-1*3)/30 =(13-1*3)/30
5 =(13-1*3)/27 =(13-2*3)/27 =(13-1*3)/27
6 =(13-1*3)/24 =(13-3*3)/24 =(13-1*3)/24
7 =(13-1*3)/21 =(13-3*3)/21 =(13-2*3)/21
8 =(13-2*3)/18 =(13-3*3)/18 =(13-2*3)/18
9 =(13-2*3)/15 =(13-4*3)/15 =(13-2*3)/15
10 =(13-2*3)/12 =(13-4*3)/12 =(13-3*3)/12
11 =(13-3*3)/9 =(13-4*3)/9 =(13-3*3)/9
12 =(13-3*3)/6 =(13-5*3)/6 =(13-3*3)/6
13 =(13-3*3)/3 =(13-5*3)/3 =(13-4*3)/3

Excelで計算させたら、見事に使用データ上の数値と一致しました。
※各四半期内(1月~3月)の時期によっては11行や12行になったりするので、その時に合わせて分母や分子の数を調整する必要があります。

最後に

これで使用データの作り方は理解できましたので、2019年以降のデータは自分で作れるようになります。

スポンサーリンク