人工知能って要は確率とか統計学じゃん。


スポンサーリンク

自然言語処理とか統計学の勉強初めて思ったことがある。世の中で一般的に「人工知能」とか言われているものはただの数学」の産物であるということ。

 

自然言語処理という言葉を知らない人のために軽く言葉について説明する。google検索とかsiri、アマゾンアレクサみたいな「音声認識」「文字検索」といったこれらの技術に使用されているものだ。これらには全て「自然言語処理」が使われている。

  >>自然言語処理の基本と技術 (仕組みが見えるゼロからわかる)
     

 

      >>言語処理のための機械学習入門 (自然言語処理シリーズ)
       

 

人間が生み出した言語とはプログラミング言語とかがあるが、それらではなく我々が普段話している言語のことを「自然言語」という。

それを数学(主に確率、統計学)の知識を使って統計処理しコンピュータに理解させるために「色々」することを「自然言語処理」という。

 

ここでいう「色々」というのは自分でも全てを述べることはできないが、例えばネット上にある大量の文章をコンピューターに読みこませることで、「この語とこの語のあとはだいたいこのパターンが~%だな」とか「この単語が多い文章はこのカテゴリーに属するな」とかそう言ったことを学習させる。そのために、文章を単語に分解させることから始まり、どの単語が何回出現するかとか、そういったことをプログラミングで処理させるのが一例だろう。

 


スポンサーリンク

 

もちろん大量の文章を学習させれば、そのうち前後の単語から品詞の推測や、適切な単語の意味を予測すると言ったこともできるわけである。最近ではgoogle翻訳などにももちろん、このような確率論の基礎的な知識が使われているわけである。

 

長くなったが上で述べてきたようなことが、自然言語処理とか統計学を自学してわかったのである。

 

人工知能というより、その正体を知っている人からしたらただの「数学」である。

やっていることは

  1. 文章ファイルをコンピュータに読み込ませる
  2. 数学的に処理できるように文章を色々分解したりする(自然言語処理)
  3. 数学的に記憶させ(データを蓄積させ)、新しいデータを与える
  4. 新しいデータが与えられた時に、何かしらの出力を返すようにソフトウェアを作る

最後のプロセスは文章のカテゴリー判別が目的ならカテゴリーを表示するようにするし、正答率などの数値的な指標を知ることが目的なら、それを表示するようにする可能性もある。

一般的な検索エンジンでは、単語が検索バーに入力された時に、「その単語を含む記事かつ、webページの評価が高いものを出力する」ようにアプリケーションが設計されているわけだ。

webページの評価指標には色々あるが、一番有名なのはgoogleの創始者のラリーペイジが開発した「ページランク」が有名だろう。

 

googleの創始者の一人「ラリーペイジ」

 

「ページランク」はより多くの人にアクセスされたり、別の記事内で引用されたりすると評価が高くなるものである。webページとラリーペイジがうまくかかっている笑

 

以上のことからも理解できると思うが、ただの数学だ。

 

しかしその挙動が、「我々の日常的なスピードよりも速く、大量の計算を実行し、オートに何かしらの出力を返す」からあたかも生きているように見えるのだ。

 

しかもオートに出力するように設計しているのは我々人間である。

 

それが人工知能の正体だ。

 

この名前に違和感があるので、別の名前にしてほしいと思う今日この頃笑

 

 

 

python機械学習プログラミング(サポートベクターマシン)



スポンサーリンク

 

Python機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)」で勉強開始したので、3章のサポートベクターマシンについて書いてみます。

   

ついでに、本書2章のパーセプトロンとか、確率的勾配降下法については以前にまとめたので、今回は飛ばします。

 

 

サポートベクターマシンとは?

2クラス分類において高性能を叩き出す分類器を作成する。汎化能力を上げる方法としてマージン最大化が行われる。マージン最大化のために、二次計画法、特にラグランジュの未定乗数法カルーシュ・クーンタッカー条件(KKT条件)が用いられる。

 

非線形分類では、リプレゼンター定理を用いカーネル化を行い特徴空間に写像する。

 

サポートベクターマシンについて本気で根本から理解しようとするとこれらの専門用語を掘り下げないといけません。

 

しかし、scikit-learnのライブラリに用意されているので理論的背景を理解しなくてもSVMを用いて実装はできるわけです。

 

でもブラックボックス状態で使うのは嫌なので、どこまで理解できるかわかりませんが、このたび本気で理解してみることに。

 

ついでに本書によると以下のマイクロソフトの公式チュートリアル(論文?)がおすすめらしいです。英文なのでしんどいですが。

日本語では以下がおすすめ。

 

 

図で説明

文章だけではわかり辛いと思うので図での説明。最大化

 

 

サポートベクトルマシンによる最大マージン分類

 

重みベクトル\(\vec{w}\)、サンプルの位置\(\vec{x}\)を用いると、

\begin{eqnarray}
&w_{0}& + \vec{w^{T}} \vec{x_{pos}} = 1 \\
&w_{0}& + \vec{w^{T}} \vec{x_{neg}} = -1 \\
\end{eqnarray}

2式を引き算すると
\begin{eqnarray}
\vec{w^{T}} (\vec{x_{pos}} – \vec{x_{neg}}) = 2  (1)\\
\end{eqnarray}

ベクトルの長さを定義して上の式を標準化する。ベクトルの長さは以下のように定義できる。

\begin{eqnarray}
\|w\| = \sqrt{\sum^{m}_{j=1}w_{j}^{2}}      (2)
\end{eqnarray}

式1,2より
\begin{eqnarray}
\frac{\sqrt{\sum^{m}_{j=1}w_{j}^{2}} }{\|w\|} = \frac{2}{\|w\|}
\end{eqnarray}
この式の左辺は、正の超平面と負の超平面の距離である、要するに最大化するマージンである。

サンプルが正しく分類されているという制約のもとでSVMの目的関数の最大化する問題は、マージン\(\frac{2}{\|w\|}\)を最大化する問題に帰着できる。
実際には、\(\frac{2}{\|w\|}\)を最大化するのではなく、\(\frac{1}{2}\|w\|^2 \)を最小化する方が簡単である。最小化する際には、二次計画法(ラグランジュの未定乗数法)により解ける。

 

スラック変数を使った非線形分離可能なケースへの対処

 

スラック変数\(\eta\)を用いることで非線形分類のために線形規約を緩和することができる。直感的に説明するならば、適切なコストペナルティを科した上で誤分類が存在する状態のまま最適化問題を収束させることが可能になった。

正値のスラック変数は線形規約の式にそのまま追加される。
\begin{eqnarray}
\vec{w^{T}} \vec{x^{(i)}} \geq = 1 – \xi^{i} (y^{i}= 1) \\
\vec{w^{T}} \vec{x^{(i)}} < -1 + \xi^{i} (y^{i}= -1) \\
\end{eqnarray}

 

したがって、最小化すべき新しい対象(先の制約の対象)は以下のようになる。
\begin{eqnarray}
\frac{1}{2}\|w\|^{2} + C \sum_{i}\xi^{(i)}
\end{eqnarray}

 

あとは、変数cを使って誤分類のペナルティを制御すれば良い。Cの値が大きいと誤分類のペナルティが大きく、小さければペナルティは小さく誤分類に対して寛容ということになる。これによりマージンの幅が制御できるので、以下の図に示すようにバイアスとバライアンスのトレードオフを調整できる。

 

確認のためパーセプトロンのアルゴリズム、ロジスティック回帰、SVMを用いて実際にIrisのデータセットを分類し、可視化してみる。

 

 

パーセプトロンによる分類
ロジスティック回帰モデルによる分類

 

 

 

 

 

 

サポートベクターマシンによる分類


スポンサーリンク

 

カーネルSVMを使った非線形問題の求解

SVMが人気の理由の一つに非線形問題をカーネル化するのが容易であることが挙げられます。例えば以下のようにnumpyのlogical_xor関数を使って200個のサンプルを用意し、2つのクラスラベルがつけられているとする。

 

これを線形SVMを用いた場合、サンプルをうまく分割できない(適切な超平面見つからない)のは明らかです。

そうした線形分離できないようなものを射影関数を用いて、高次元空間へと射影し線形分離できるようにします。以下の式で表現できる射影を使ってクラスを分離します。
\begin{eqnarray}
\phi(x_1,x_2) = (z_1,z_2,z_3) = (x_1,x_2,x_1^2 + x_2^2)
\end{eqnarray}

これによりグラフに示されている二つのクラスを線形超空間を使って分離できるようになります。それを元に特徴空間へ再度射影することで非線形の決定境界が得られます。

以下は、非線形分離するまでの過程を視覚的に表現したものです。

 

 

人生で大切なことは書店で買える〜千田拓也〜


スポンサーリンク

たまに何もやる気がなくなる時があります。

そういう時は自分は部屋にこもって本読むのですが、それさえもやる気が起きない時です。

考え事してると、結局マイナスなことばかり考えて何もアクションを起こせずに時間がすぎ、何もやる気がなくなる時があります。

ついでに、人間誰もいない環境で考え事してるとマイナスなことを次第に考えるようになるというのは誰でも共通しているらしいです。研究結果であります。

 

なので、絶対に部屋で一人でこもることはやめましょう。目的などなくても外出した方が精神的にも良いらしいです。

 

話を戻しますが、何もしない時は自分は部屋の本棚をぼーっと眺めて、読むつもりなくても直感で本を手に取り、ペラペラページをめくるようにしています。

 

そうすると、案外5分10分時間がすぎていることがあります。

 

今回はそんな時に印象に残った本、千田琢哉さんの「人生で大切なことは、すべて「書店」で買える。」について。

>>人生で大切なことは全て「書店」で買える<千田琢哉>

   

 

 

自己啓発の世界でのパイオニアです。まだ30歳くらいでお若いのにこれまでに多くの本を出版されています。しかもゴーストライターはなしです。全て原稿は自分で書いているそうです。

その代わり、小説のようにぎっしり文章が詰まっている訳ではないです。なので一冊2時間程度で読み終わります。

 

で何が救われたって、やる気がない時はやっぱり本読みまくるのが一番いいんだなってこと。

 

千田さん曰く、昔から本の読みすぎ、書いすぎで貧乏になった人はいないんですって。

 

これ聞くと、どんなに金欠で時間貧乏でも、他のこと忘れて読書したくなりますよね。

 

自分今金欠ですが、この言葉のおかげで本を新たに一冊購入しました笑。

 

で要はこの一言に出くわして何が変わったかというと読む前は

「部屋にこもって何もできずにいる」だったのに

読んだあとは

本屋へいく→本を購入→カフェで読書→読んだことに知識がつく→この出来事を記事にする

5個のアクションが増えました。抽象的なことですが深掘りしなくても、この一言に出会う前とあとではアクションがこれだけ変化したということです。

 

本の力は素晴らしいですね。

 

自分だってこれを狙っていたわけではありません。本当何もやる気が出なかったのです。

 

他にもこんな言葉が。

 

「読書して眠れなくなったら徹夜してもいい。それが大人の勉強だ。やらされる学生の勉強とは違う」

 

いや嬉しいですね。より読書したくなります。とりあえずこれからも何もやる気が出ない時は、今回みたいに未来を変えてくれる言葉に出会う可能性があるので、本棚をテキトーに眺めることにします。

  本気で勝ちたい人は やってはいけない
  

 

  「仕事が速い」から早く帰れるのではない。「早く帰る」から仕事が速くなるのだ。
  


スポンサーリンク

思ったよりもPV数が伸びなくて悩んでいる。


スポンサーリンク

 

三ヶ月、150記事は本当か?

以前に、サイトは「3ヶ月、150記事から勝負だ」みたいなこと書きましたが、150記事書いたが思った以上にPVが出なくて、やる気がなくなっている。

>>以前の記事

 

 

自分の場合少し特殊で、最初一ヶ月記事書く(3つのサイトで同時平行)→2ヶ月放置→1ヶ月記事書く(3つのサイトの記事を一つにサイトに移転(統合))という形。

二ヶ月放置した分を含めたら、すでに4ヶ月経過しているということになる。

もしかしたらサイト移転したのがSEO的によくなくて、実質まだ初めて一ヶ月と同じ状況なのかもしれない。

だとしたら、最初から3つのサイトの運営とかチャレンジするんじゃなかった笑。最初から一つのサイトで記事を書きはじめて入れば今頃は4ヶ月分のSEO効果が検索エンジンに反映されていたのかもしれない。

 

たらればの話はここでは置いといて、にしても150記事書いたけど、月間pv数が1300ってどういうことよ笑

 

自分の記事について

 

正直一つの記事の文字数は2000〜3000文字で、自分で勉強した学術的なことやプログラムの勉強のアウトプットをメインに書いているので、トレンドブログのように内容も決して薄くない。

その証拠にセッション数は3.00くらい、セッション時間も4〜5分、直帰率60パーセントと初心者ながらもサイト内容のせいか、結構奮闘している。

 

 

下をみるようで申し訳ないが、トレンドブログ(芸能ニュース、ドラマ、ファッション)だとセッション時間が1分程度でも珍しくないらしい。それはそのサイトを訪れている人がその記事の内容(ニュース)にしか興味がないからである。

セッション数やセッション時間からみるに、訪れている人は自分の記事をしっかり読んでくれてはいるみたいだし、ページを跨いでサイトを訪問してくれているということだ。

にも関わらず、PVは伸びない。

 

要するに、「検索する人は限りなく少ないが、検索した少数派の人はサイトをちゃんとみてくれている」ということになる。

 

さてどうしたかものか、一般的に需要があるようなトレンドネタはあまり書く気が起きないし、かといってこのまま、ギークなネタばかりで書いていてもPV数が上がらずにモチベーションが下がるばかり。

 

もっと日常のありとあらゆることにアンテナをはり、ネタを探す以外に方法はなさそうだ。家族や友人との会話、外出先のいつもの見慣れた風景、なんでもいいから思ったことはつらつら書く。

 

トレンドネタに興味がない自分ができることは記事数を増やして、サイト訪問者の絶対数を増やすしかなさそうだ。もっと敏感に。もっと記事を書くことに寛容になろう。


スポンサーリンク

コーシー分布と正規分布(python)

正規・コーシーベイズ推定量というものを勉強した際、そもそも正規分布とコーシー分布ってどう違うねんって思ったので、pythonでプロットしてみること。

 

正規分布

 

 

特に難しくはない。標準正規分布で平均0、標準偏差1になるようにランダムに10000点プロットし、ヒストグラムにしたものです。

裾が軽い(外れ値をとるものが少ない)ため、様々な数理モデルに利用される。

 

コーシー分布

 

 

 

コーシー分布は外れ値をとる確率が高く、外れ値が重要な意味をもつ場合には利用される分布です。株価暴落など、正規分布の裾が軽い分布でモデル化できないときなどに用います。

外れ値と最頻値をとる頻度に差がありすぎて、わかりづらいので120〜240を拡大してみます。

回数は少ないですが存在してます。

もう一つの特徴は「確率密度関数を描画すると左右対称の確率分布にも関わらず、その平均は0ではない」ことです。

-∞〜∞の範囲で広義積分をすると、その極限は存在しないことがわかります。そのため平均(期待値)が存在しないので、大数の法則や中心極限定理が成り立ちません。なので当然モンテカルロ積分で積分計算を近似することもできない(精度がよくない)です。

 


スポンサーリンク

日本人はマナーがいいという風潮について


スポンサーリンク

 

最近よくみる下のような記事。日本人がマナーいいね!って感じの内容。

 

これ読んで思うのは、当然じゃない?って話。

国民の裕福度や経済力を平均値でみた時に安定しているのは、世界的にも日本くらいだろう。

アメリカや中国は日本よりGDPも高いし、国民一人あたりのGDPをみた時に日本より高いデータが出ている国もある。

しかし、ここまで国全体としてばらつきがなく、均等に経済力が保たれている国なんておそらく日本くらいだろう。

 

いわゆる上下の差が少ない社会と言ってもいい。

 

何が言いたいかというと、席を譲ったり、物をパクることなく拾ってあげたり、警察に届けたり、放置されている物を無断に取らないとか、自販機が壊されることなく普通に販売できるとかいうのは、「窃盗とかしなくても最低限に生きていることは誰でも保証されていますよ」ってことの裏返しである。

 

わかりやすい例をいうと「戦争しか知らない子供」と「戦争を知らない子供」の価値観は当然違うわけだ。

 

前者からしたら、家族や自分より年下の兄弟の命を食いつなぐためにも、人を殺すことだってあるわけである。過酷な環境なら泥水だって普通に飲むだろう。

日本にしか知らない子供からしたら「そんなことはありえない」わけである。これが価値観の違いだ。日本人からしたらありえないが、ゴキブリを平気で食う国もあるわけだ。

 

話を元に戻すと、日本人が人の物を取らないとか置いてあるものを取らないとかいうのは礼儀正しいとか、規律を重んじているとかではなくそれが当たり前で、生まれた時から「そういうことをしなくても生きてこれたからする必要がない」のである。

 

だから生まれた時から「そういうことをしなければ生きて来れなかった」、もしくはそういう人が周囲にいた人からすれば当然、驚きなのである。

 

生きてきた環境が違うのだから価値観も異なる。もう少し現実味のあることを言おう。「中卒」と「東大卒」の人の価値観は当然違うわけだ。反感を買われるかもしれないが、紛れもない事実だ。

どういうことに金を使い、どういうことに時間を使うかも変わってくる。これが価値観の違いだろう。

 

要するに、日本人が礼儀正しいとかそういうんじゃなく、生まれた時から世界的にみて「そういうこと(窃盗とか)をする必要がなかった」だけである。

 

それを自分たちにできないからただ「礼儀正しい」とか言っているだけだ。本当に礼儀正しいのは「そういう環境」にいても正義を貫ける人である。

 


スポンサーリンク

python lambda(無名関数)とリスト内包表記の違い




 

リスト内包表記とかlambda式(無名関数)とか書き方たくさんあるけど、どちらがいいんだろうと思ってたので、調べてみました。

なお今回表示させる関数は以下の関数。「ニュートンの蛇形」と言われています。
\begin{eqnarray}
y = \frac{x}{x^2+1}
\end{eqnarray}

 

リスト内包表記

 

 

計算範囲は-1000〜1000ですが、関数に代入する値は0.01をかけた-10〜10です。

実行すると

lambda式(無名関数)

 

無名関数とは「その場限りの関数」です。なので、定義された関数や計算結果を引き継いだりはしません。使い所は難しいですが、慣れればフレキシブルにプログラムをかけるようになると思います。

 

先ほど同様-1000〜1000が計算範囲ですが、実際に関数に代入される値は-10〜10です。


 

比較すると、リスト内包表記は1行、lambda式は6行です。単純にグラフ作成する程度なら「わざわざforループを作って無名関数を使うほどでもない」とういことですね。

あらかじめ他にfor文が上にあり、そのfor文のループ範囲と計算したい関数の計算範囲が一緒なら、無名関数を用意するだけですが、それでもその計算結果を格納するための配列を用意するということを考えれば、やはり「リスト内包表記」が最強な気がする。

for文処理をしない積分計算ならlambda式はかなり威力を発揮しそうですね。

 



インスタグラムをやる意味が正直わからない。


スポンサーリンク

近年SNSブームだが、その中でも特に自分が疑問を抱いているのが「Instagram」というサービス。

 

自分はこれに魅力を全く感じない。いやtwiiterとかfacebookを使わずにいきなりSNSデビューがそれならいいと思う。

 

その人は逆に「facebookっていらなくない?インスタでよくない?」って考えると思う。

 

自分が思っているのはこれの逆である。

 

ツイッターとフェイスブックを使ってきた自分からしたらこれ以上のSNSはいらないのである。

 

 

もともと若者は気軽に一言書き込めるツイッターに群がっていたが、文章だけでなく「自分がとった写真メインのSNS」ということでツイッターユーザーも使うようになった。だから10代、20代も最近はやっている人は多い。

量が多すぎて使いきれていない人も多い

 

文章→写真という図式でツイッター→facebookとユーザーが遷移(もしくは使い分け)したにも関わらず、なせここでまた写真のSNSなのか?

繰り返すようだが、facebookを知らない高校生とか中学生が初めてのSNSで使用するなら十分わかる。しかし疑問なのは、facebook使っているにも関わらず、インスタグラムを使っている連中だ。

図式でいうと「写真→写真」。何がしたいのかわからない。facebookの何が不満でインスタグラムを利用しているのか。

 

ここでなぜそういう事象が起きるのかある仮説を考えようと思う。

仮説1「周りが使っているから使う」

仮説2「facebookが飽きたから」

仮説3「流行りのものはとりあえず全部インストールしておくミーハー」

仮説4「上の仮説1~3の組み合わせ」

だろうか。

合理主義の自分からしたら、全く持って無駄なのではないかと思うが、ここは頑張って論じてみようと思う。

そもそもなぜSNSを使うのか。それは便利だからである。もちろん楽しいから(承認欲求を簡単に満たせる)というのもあるが、それが目的なら一つやれば事足りるはず。

にも関わらず、いくつか使い分けているということはやはり「(便利さを求めて)無意識にも自分の中でルールを決めて役割分担をしている」のだろう。

と考えるとどうしても「インスタグラム」の有用性が理解できない。

 

特定の人との交流→LINE

不特定多数の人とその場で思ったことを言語化して交流→ツイッター

不特定多数の人とその場で感動したことを映像化して交流→facebook

 

やはりインスタグラムの使いどころがわからない。

slackを使ってる人からするともはやラインはいらないだろう。自分もスラックを使っている時は何度も思った。

 

最後になるが、ちゃんと役割を明確にし自分にとって本当に必要なアプリなのか見定めないとただ時間を食うばかりである。

そして、何も考えずに時間を浪費していてはいつまでたっても提供側の思うつぼ(都合の良い消費者)であり、手のひらで転がされるだけである。

 


スポンサーリンク

北朝鮮はミサイルよりもロケット開発を始めた方がいい


スポンサーリンク

北朝鮮がミサイルうちまくっているけど、実際「中距離弾道ミサイル」とか「大陸間弾道ミサイル」って飛距離どのくらいなの?ってところから始まった。

調べてみるとなんと過去に北朝鮮が発射した中距離弾道ミサイルの飛行距離は3700km、最高到達高度は800kmだという。

7月に発射した大陸間弾道ミサイルの飛行距離は5500km、高度は2800kmに達したという。

高度2800kmってそれもう宇宙ですやんww

 

  >>ミサイルの科学 現代戦に不可欠な誘導弾の秘密に迫る (サイエンス・アイ新書)
  

>>図解入門 最新 ミサイルがよ~くわかる本
  

 

ついでに地球と宇宙の境界線について厳密な定義はないらしいが、高度100kmの時点で大気はほとんどなくなり、真っ暗な宇宙が見えます。

 

国際宇宙ステーションの高度は400km。静止衛星の高さは36000kmです。

 

さすがに静止衛星とまでは行かないが、2800kmまでミサイル打ち上げる技術力あるなら、その技術生かして宇宙開発始めちゃえよって思う。

 

実際宇宙開発は莫大な費用がかかるし、失敗のリスクもあるから北朝鮮のような貧乏国にはできないんだろうが。

それに「2800kmまで核爆弾を積んで運ぶ」のと「36000kmまでペイロード(衛星)積んで運ぶ」のでは難易度も求められる技術力も全然違うんだろうが。

 

ただ正直、高度2800kmはビビる。ミサイルってもっと低軌道かと思ったら思いっきり宇宙空間遮っているのね笑

 

さすがに核爆弾積んでるから、イーロンの再利用ロケットみたいに「再利用ミサイル」とまではいかないんだろうが、この調子でミサイル職人の道極めたら、「地球全体射程範囲ですけど何か問題でも?」みたいな感じになるのか。

それはそれで今よりも国際的に孤独になるだろうからざまあって感じですね。というよりこのままだと全世界相手にすることになるよね。中国とロシアがいつまで肩持つのかよくわからんが。

 

世界で大陸間弾道ミサイルを所持しているのはアメリカ、ロシア、中国のみ。しかも近年は目新しい進歩もない。

 

この手の技術は一度完成してしまったら、あとは細かい部分のマイナーチェンジだけだので、アメリカやロシア、中国からしたら「今更ミサイル完成したんですか。はいはいここまでよきできましたね。我々は30年前にはその段階に達していたけど、何か問題でも?」って感じなのだろう。

 

なんだかヨユー感がアメリカやロシアからは滲み出ている。だからこそここまでほっとけるのだろうが。

 


スポンサーリンク

pythonで積分、平均値推移とその標準誤差にもとづく信頼幅の計算




前回に引き続き、「 Rによるモンテカルロ法入門」のメモ。

前回の記事はこちら。

 

 


今回は
\begin{eqnarray}
h(x) = \{\cos(50x)+ \sin(20x)\}^2
\end{eqnarray}

の積分の近似精度を評価をします。以下では計算回数による、平均値の推移と推定標準誤差にもとづく信頼幅をプロットしてみます。

 

とりあえず計算で求めたい関数をグラフ描画してみる。

そうすると以下のグラフが

そして参考書に基づき、積分区間を0から1の間の乱数で与え、それの平均値と信頼区間95%の範囲の標準誤差をグラフ化するプログラムが以下。

 

 

なお今回は用いていないが、収束を見たい場合、一般的にリスト内の累積和を求めてくれるcumsum()コマンドを用いると良い。そうすると今回のようにfor文内で範囲指定ありのsumコマンドを使う必要がなくなる。

 

例)

 

そして先ほどプログラムの実行結果を示します。積分範囲を0〜1とし,integ関数を用いて積分計算した時の値(0.9652)に収束しています。これを大数の法則と言います。(グラフの横軸は計算回数)

 

labelコマンドを用いたがなぜか判例が表示されないのは許していただきたい。青線が平均値、赤が+の信頼幅における標準誤差、緑が-の信頼幅における標準誤差です。

グラフの形は参考図書と一緒になっているが、「標準誤差」をまだ完全にできていないのでもしかしたら間違ってるかもしれない。

 

標準誤差について

 

試行回数Nが十分大きい時は標準偏差\(\sigma \)を用いて、

\begin{eqnarray}
S,E = \frac{\sigma}{\sqrt{N}}
\end{eqnarray}
と表せる。

上の定義からわかるように、その試行回数によってどの程度のばらつきが生じるかを、全ての組み合わせについて(試行回数)の標準偏差で表現したものである。

なので、誤差評価に標本サイズを加味したい場合は標準偏差ではなく「標準誤差」を用いる。