R データ分析入門シリーズ

【R言語】 Sample関数による無作為抽出のやり方

この記事は約3分で読めます。

 

Rでの乱数の生成

 

前回、正規乱数と一様乱数の生成方法を紹介したところで、次はsample()関数による無作為抽出のシミュレーションを行っていきます。sample()関数が、前回紹介したdnorm()関数などどう違うのかというと、引数probによって各事象の出現確率を指定できるという点です。まずは文字列ベクトルで、おみくじの運勢を作ってみます。

 

 

luck <- c(“凶”,”小吉”,”中吉”, “大吉”)

 

 

そしてsample関数で無作為抽出を行います。

 

 

> sample (luck, size =1)
[1] “凶”

 

 

無作為抽出なので同じコマンドでももう一回やると結果が変わります。

 

 

> sample (luck, size =1)
[1] “大吉”

 

 

今年の運勢は凶とは我ながらツキがないですね。まだ初詣でおみくじ引いてないので・・・。ちなみにsizeの数値を増やすことで抽出できる事象の数は増えます。

 

> sample (luck, size =10,replace=T)

[1] “大吉” “中吉” “凶” “中吉” “中吉” “小吉” “小吉” “大吉” “大吉” “大吉”

 

 

反復抽出を行うときはreplace=Tが必須です。そしてtable()関数で出た事象(ここでいう運勢)の集計をします。

 

 

>omikuji<-table(kuji)

 

 

そして、これをヒストグラムにしてやるとこうなります。

 

 

> barplot(omikuji)

 

f:id:oruka199665:20170105215450j:plain

 

sample()関数はデフォルトだとどの事象も、均等に出現する一様乱数となっています。というわけで次は本題である引数probを使った事象確率の操作に入ります。

 

 

> omikiji<- sample(luck, size =1000, replace = T, prob = c(0.2, 0.4, 0.3,0.1))
> barplot(table(omikuji))

 

f:id:oruka199665:20170105221523j:plain

 

 

プロットするとこんな感じになります。probで各事象に対応する事象の出現確率を設定できます。上の場合だと

 

 

luck<-c("凶" "小吉" "中吉" "大吉)
prob = c(0.2, 0.4, 0.3,0.1)

 

に対応しているので凶が20%、小吉が40%、中吉が30%、大吉が10%の確率で出ることになります。もちろんprobのベクトルの合計は、確率の合計である1にしなければいけません。ここは少数ではなく、1/10といったような分数で指定することもできます。

 

 

 

関連記事

【R言語】 二項分布をプロットしてみる

【R言語】 いろんな乱数の発生方法

【統計学】 回帰分析とは?

 

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

タイトルとURLをコピーしました