Rで正規分布曲線を描く
実験で詰まったのでメモ
僕は貧乏学生なのでMSOfficeとかいう富裕層向けのソフトを持っていなくて,普段実験のデータ処理はNumbersとかLibreのCalcとか使ってやってるんだけど,今回それじゃどうにもならなそうな課題が出てきた.
【課題】
得られたデータを区間ごとに区切ってヒストグラムを書いて,平均と標準偏差を求めて正規分布曲線を書け
CalcにもNumbersにも関数を入力してグラフを出力するって機能がない(見つけられないだけかもしれない)ので曲線上の点を無数に取って繋げてグラフを書こうとしたけど,ヒストグラムと重ねようとするとx軸がうまく合わせられずにダメだった.
他の学科の友だちに聞いたらRでやれよって言われたのでRでやることにした.
まず適当にデータをcsvで出力する.(data.csv)
このとき,一行目にきちんとラベルを入れておく.
今回は"count"とした.
まずはRを起動してcsvを読み込む.
$ R > data <- read.csv("data.csv")
dataオブジェクトに数値が入っていることを確認して,数値を呼び出しやすくする.
> data #これでcsvの中身が表示される. > attach(data) #dataオブジェクトから数値を持ってくる準備 > count #先ほどのattachによってdata中のcountをこれだけで呼び出せるようになった.
今調べたいデータがcountに入ったので,これを用いて統計を行っていく.
平均と標準偏差を求める.
> countm <- mean(count) #平均 > countsd <- sd(count) #標準偏差
データの準備ができたので正規分布曲線を描いていく.
今回はcountを横軸に,countの確率密度を縦軸に置いたグラフを描きたい.
組み込み関数dnormを用いて確率密度を表すとdnorm(count,countm,countsd)
これを線プロット(type = "l")していく.
> plot(count,dnorm(count,countm,countsd),type = "l")
すると以下のようなグラフが得られた.
なるほど,今回は無作為に得られたデータを線で繋げという命令をしたのでこうなるのは当たり前だった.
countは昇順にソートし直す必要がある.
> scount <- sort(count) > plot(scount,dnorm(scount,countm,countsd),type = "l")
そして次の曲線を得た.
とりあえず正規分布曲線を描くという目的は終えた.
ブログ書いてて思い出したんだけどグラフの出力
> png("hoge.png") #描画モードをpngに > plot(scount,dnorm(scount,countm,countsd),type = "l") > dev.off() #描画モードを標準に戻す
ざっとこんな感じ