データサイエンス時代で活躍する人材になるために

データサイエンス時代で活躍できる人材になるために

純粋数学から応用数学までデータサイエンスに関わる様々なことについて取り上げます!

MacにMathematicaをインストールする方法

今回はMathematicaをインストールしていきます.WolframID,アクティベーションキーは既に取得していることを前提に説明します.
作成がまだの方はこちらから準備してください.
まず以下のURL先に移動してください.
https://account.wolfram.com/login/oauth2/sign-in

以下の画面に移動できたら登録したメールアドレスとパスワードを正しく入力してください.
f:id:koki12070930:20210308224533p:plain

USER PORTALに移動したら「Mathmatca Japanese Edition for students for Sites」を選択
f:id:koki12070930:20210308224816p:plain

一番下まで移動して,「ダウンロード」を選択
OSを必ず確認してください!!!

インストールイメージ(ファイル)をダウンロードしてください.
f:id:koki12070930:20210308230122p:plain

ダウンロードしたものを開いて(以下の画面になればOK)Mathematicaのインストールを開始してください.
インストールにはかなり時間がかかります...

f:id:koki12070930:20210308235047p:plain

Mathematicaの勉強には以下の書籍がおすすめです.

はやわかりMathematica 第3版

はやわかりMathematica 第3版

  • 作者:榊原 進
  • 発売日: 2010/03/24
  • メディア: 単行本
ではまた!

M1 MacにTeXをインストールする方法

Mac Book Airを使用して4年間目となったので最近新しくMac Book Proを購入しました.
TeXを新しいpcにインストールする必要があったのでその手順を本ブログでご紹介します!

TeXのインストール方法


まず以下のURL先に移動しましょう!
https://tug.org/mactex/mactex-download.html

次に遷移後の画面の「MacTeX.pkg」をクリックしてください.

f:id:koki12070930:20210304205715p:plain
ダウンロードを許可するか聞かれるので「許可」を選択してください.

f:id:koki12070930:20210304180655p:plain

ダウンロードが終わったら(少し時間がかかる),インストーラをクリックして指示通りにソフトウェアのインストールを行ってください.

f:id:koki12070930:20210304210236p:plain

以下の画面になればOK!

f:id:koki12070930:20210304211350p:plain

Finderからアプリケーションを選択し,「TeX」フォルダの中にTeXShopがあることを確認しましょう.

f:id:koki12070930:20210304212342p:plain

TeXShopの環境構築

インストールが終わってもまだやることがあります...
TeXShopのデフォルトの設定で和文のクラスをコンパイルすると,エラーが出てしまいます.以下ではその対処方法を記載します.
上部のメニューから「TeXShop」→「環境設定」を選択

f:id:koki12070930:20210304215502p:plain

「設定プロファイル」をクリック

f:id:koki12070930:20210304215209p:plain

pTeX(ptex2pdf)」を選択

f:id:koki12070930:20210304215641p:plain

これで全ての設定が終了です!お疲れさまでした!

TeXの勉強には以下の書籍がオススメです.

ではまた!

不偏推定量ってなんですか?


今回は推定論で重要な不偏推定を中心に解説したいと思います.

不偏推定量

\theta不偏推定量であるとは以下が成立することを言います.

\begin{align*}
E_\theta[(\hat{\theta}(X)]=\theta
\end{align*}
簡単な例として標本平均を考えてみます.

\begin{align*}
E[\overline{x}]=\frac{1}{n}\sum_{i=1}^{n}E[ x_i]=\frac{1}{n} \times n\mu=\mu
\end{align*}
したがって,標本平均は母平均の不偏推定量となっていることが確認できます.b(\theta)=E_\theta[(\hat{\theta}(X)]-\thetaを推定量\thetaバイアスと言います.不偏推定量の場合,バイアスはゼロとなります.

バイアス・バリアンス分解

平均二乗誤差を最小化するためにはどうすれば良いのでしょうか?まず平均二乗誤差をいくつかのパーツに分けられないか検討してみましょう!
乗法公式より以下が成立します.

\begin{align*}
E[(\hat{\theta}-\theta)^2]&=E[(\hat{\theta}-E_\theta[\hat{\theta}]+E_\theta[\hat{\theta}]-\theta)^2\\
&=E_\theta[(\hat{\theta}-E_\theta[\hat{\theta}])^2]+(E_\theta[\hat{\theta}]-\theta)^2+2(E_\theta[\hat{\theta}]-\theta)^2E_\theta[(\hat{\theta}-E_\theta[\hat{\theta}])]\\
&=\mathrm{Var}_\theta[\hat{\theta}]+b(\theta^2)+0
\end{align*}
最後の等式の第1項,第2項はそれぞれ分散とバイアスの定義から明らかです.注意しておきたいのは第3項がゼロになるところです.E_\theta[E_\theta[\hat{\theta}]]=E_\theta[\hat{\theta}]より,

\begin{align*}
2(E_\theta[\hat{\theta}]-\theta)^2E_\theta[(\hat{\theta}-E_\theta[\hat{\theta}])]&=2(E_\theta[\hat{\theta}]-\theta)^2(E_\theta[\hat{\theta}]-E_\theta[\hat{\theta}])]\\
&=0
\end{align*}
となり,確かにゼロとなることが確認できます.
したがって,不偏推定を考えればバイアスを持つことがなく,平均二乗誤差が小さくなることが期待されます!!!

一様最小分散不偏推定量

バイアスを持たないとき,平均二乗誤差は以下のように表せることが分かりました.

\begin{align*}
E[(\hat{\theta}-\theta)^2]=\mathrm{Var}_\theta[\hat{\theta}]
\end{align*}

したがって,不偏推定量に限った場合を考えると平均二乗誤差を最小化する推定量\mathrm{Var}_\theta[\hat{\theta}]を最小化する推定量であることが分かります.不偏推定量\hat{\theta}^\astの分散が他のどんな不偏推定量の分散以下となるとき,\hat{\theta}^\ast一様最小分散不偏推定量 (Uniformly Minimum Variance Unbiased estimator/UMVU)といいます.
与えれれた不偏推定量UMVUであるかどうかを確認する方法は以下の2つが知られています.

  1. クラーメル・ラオの不等式を用いる方法
  2. 完備十分統計量の理論を用いる方法

今回は1. のクラーメル・ラオの不等式を用いる方法をご紹介します!!!

フィッシャー情報量とクラーメル・ラオの不等式

クラーメル・ラオの不等式を説明するためにはまずフィッシャー情報量を定義する必要があります.フィッシャー情報量I_n~(\theta)は,確率密度関数fに対し以下で定義されます.

\begin{align*}
I_n(\theta)=E_\theta\biggl[\left
(\frac{\partial}{\partial\theta}\mathrm{log}f(X_1,\dots,X_n;\theta)\right)^2\biggl]
\end{align*}

不偏推定量の分散とフィッシャー情報量の間にクラーメル・ラオの不等式と呼ばれる以下の不等式が成立します.

\begin{align*}
\mathrm{Var}_\theta[\hat{\theta}]\geq \frac{1}{I_n(\theta)}
\end{align*}
この不等式が意味することは,どんな不偏推定量の分散もフィシャー情報量行列の逆数よりも小さくすることはできないことを意味しています.

クラーメル・ラオの不等式の等号を満たす不偏推定量\hat{\theta}^\ast有効推定量と呼ばれます.
したがって,

\begin{align*}
\mathrm{Var}_\theta[\hat{\theta}]\geq \mathrm{Var}_\theta[\hat{\theta}^\ast]=\frac{1}{I_n(\theta)}
\end{align*}
が成立するので,有効推定量はUMVUとなります.

以下の参考書がとても勉強になります.

新装改訂版 現代数理統計学

新装改訂版 現代数理統計学

数理統計学: 統計的推論の基礎

数理統計学: 統計的推論の基礎

  • 作者:学, 黒木
  • 発売日: 2020/01/29
  • メディア: 単行本

ではまた!

確率母関数による二項分布の平均・分散の導出方法


二項分布の平均や分散を求める問題は,大学の試験だけでなく統計検定やE資格などにも出題される可能性があります.二項分布の平均や分散を定義に通りに求めようとすると, 計算がとても大変になりもっと簡単に求める方法はないの?と思うことがあります.

二項分布の平均・分散の導出方法は以下の3通りがあります.(他にもひょっとするとあるかもしれません)

  1. 平均や分散の定義にもとづいた導出
  2. モーメント母関数を用いた導出
  3. 確率母関数を用いた導出

今回は,確率母関数を用いた二項分布の平均・分散の導出方法をご紹介します!

確率母関数の定義とk次の階乗モーメント

整数値をとる確率変数X確率密度関数p(x)として,tを任意の実数とするときX確率母関数は以下で定義されます.
p(t)=E(t^X)=\sum_xt^xp(x)

確率母関数を用いることで,k次の階乗モーメントを定義することができます.
離散型確率分布の場合,k次の階乗モーメントを用いることでモーメントが求めやすくなることがよくあります.k次の階乗モーメントは以下のように表すことができます.
\left. \frac{d^kp(t)}{dt^k}\right|_{t=1}=E[X(X-1)\cdots(X-k+1)

導出方法はとても簡単です.まずk=1のときを考えると,

\begin{align*}
\frac{dp(t)}{dt}&=\frac{d}{dt}E[t^X]\\
&=E\left[\frac{d}{dt}t^X\right]\\
&=E[Xt^{X-1}]
\end{align*}
となります.
同様に考えると,
\frac{d^kp(t)}{dt^k}=E[X(X-1)\cdots(X-k+1)t^{X-k}]であるため,ここにt=1を代入すれば求めたい等式を得ることができます.

二項分布の平均の導出

nは整数,0< p <1, q=1-pとします.
このとき,二項分布の確率母関数は以下で表されます.

\begin{align*}
p(t)&=E[t^X]\\
&=\sum_{x=0}^{n}t^x{_nC_x}p^xq^{n-x}\\
&=\sum_{x=0}^{n}{_nC_x}( tp )^x q^{n-x}\\
&=(tp+q)^n
\end{align*}
平均E[X]は,k=1の階乗モーメント\left. E[X]=\frac{dp(t)}{dt}\right|_{t=1}で求めることができます.

\begin{align*}
\frac{dp(t)}{dt}&=np(tp+q)^{n-1} \\
&=np(tp+1-p)^{n-1} 
\end{align*}
したがって,
\left. E[X]=\frac{dp(t)}{dt}\right|_{t=1}=npを得ることができます.

二項分布の分散の導出

分散の定義より,

\begin{align*}
\mathrm{Var}[X]&=E[X^2]-[E]^2\\
&=E[X(X-1)]+E[X]-[E]^2
\end{align*}
です.E[X]はすでに求めているので,2次の階乗モーメントを用いてE[X(X-1)]さえ求めれば良いことがわかります.

\begin{align*}
\frac{d^2p(t)}{d^2t}&=n(n-1)p^2(tp+q)^{n-2} \\
\end{align*}
であるので2次の階乗モーメントは,

\begin{align*}
\left. E[X(X-1)]=\frac{d^2p(t)}{d^2t}\right|_{t=1}=n(n-1)p^2
\end{align*}
です.
したがって,分散は

\begin{align*}
&=E[X(X-1)]+E[X]-[E]^2\\
&=n(n-1)p^2 +np -(np)^2\\
&=np(1-p)\\
&=npq
\end{align*}
となります.

確率母関数に関しては以下の書籍が参考になります.

ではまた!

試験対策:Python3エンジニア認定基礎試験

Python3エンジニア認定基礎試験の試験対策としての記事を今回は書きます.
DIVE INTO EXAMから模擬試験を受けることができ,気になった問題や関連する話題について取り上げます.



問1 以下のプログラムを実行した際の出力結果を答えなさい.

name1,name2,name3,name4= '', 'suzuki','tanaka','sato'
selected_name = name1 or name2 or name3 or name4
print(selected_name)

正解: suzuki

解説
論理演算子には and,or,notの3つがあります.
orは,aまたはbのどちらか一方でもTrueならTrue.両方ともFalseならFalseです.

>>> True and True
True
>>> True and False
False

True,False以外の値が使われた時は,値の大きさに関わらず,orでは左項,andでは右項の式を返します.

>>> 4 or 5
4

問2 Pythonインタープリタにて以下のように入力した場合の出力結果を答えなさい.

>>> import reprlib
>>> reprlib.repr(set('diveintocode'))

正解: "{'c', 'd', 'e', 'i', 'n', 'o', ...}"

解説
長い配列の最初の数個だけを表示させたい!
そんな場合にreprlibモジュールを使います.
reprlib.reprで出力の長さを制限することができます.

問3 対話モード時に,最後に表示した式を格納する変数を答えなさい.

正解: アンダーバー「_」です.

解説
アンダーバー「_」に最後の計算結果が代入されます.

>>> a="機械学習サイコー!!"
>>> a
'機械学習サイコー!!'
>>> _
'機械学習サイコー!!'

問4 ビルドイン関数dir()はどんな機能を兼ね備えているか答えなさい.

正解: モジュールが定義している名前を確認することができる.

解説
下記のような使い方をすることでモジュールが定義している名前を確認できます.
dir(モジュール)
dir(パッケージ)

>>> import sys
>>> dir(sys)
['__breakpointhook__', '__displayhook__', '__doc__', '__excepthook__', 

#以下省略します

sysモジュールが定義している名前を確認することができました.

問5 コンパイルPythonファイルの拡張子を答えなさい.

正解: pycです.

解説 PythonでもCやJavaのようにコンパイルすることが可能です.

print('コンパイルしてみますね')

上記のコードをtest.pyというファイルに保存します.

>>> python
>>> import py_compile
>>> py_compile.compile('test.py')
'__pycache__/test.cpython-37.pyc'

test.cpython-37.pycが生成されました!
一番後ろの拡張子pycが見当たるでしょうか?
Pythonスクリプトを抜けて,

cd __pycache__
python test.cpython-37.pyc

と入力すると,

コンパイルしてみますね

と表示されます.

問6 sys.ps1は何を表しているか答えなさい.

正解: 一次プロントを定義した文字列です.

解説
pythonインタプリタの一次プロンプトは'>>>'です.
また,二次プロンプトは'...'です.

>>> import sys 
>>> sys.ps1
'>>> '
>>> sys.ps2
'... '

一次プロントは以下のように変更することが可能です.

>>>>>> sys.ps1='prompt:'
prompt:

'>>>'から'prompt:'へ変更することができました.

Python3エンジニア認定基礎試験のための指定教科書は下記です.

Pythonチュートリアル 第3版

Pythonチュートリアル 第3版

こちらの指定教科書はなかなか難しく,副教材としては次が役に立ちました.
詳細!Python 3 入門ノート

詳細!Python 3 入門ノート

またUdemyの「現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル」はとても分かり易く勉強になります.リンクを貼っておきます.
https://www.udemy.com/share/1013hkAkcbc11UTXw=/

2月までにPython3エンジニア認定基礎試験に合格したいと思います.
ではまた!