13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

三重大学 計算研Advent Calendar 2019

Day 15

R&統計学入門[1] Rイントロダクション

Last updated at Posted at 2019-12-15

はじめに

Rの入門記事なんてn番煎じですが、ぱぱっとRの機能(Excelに近い機能の部分)を紹介するRのイントロダクションです。

Rとは

  • Rは、多機能データ分析ツールのデファクトスタンダード(事実上の標準)
  • データ分析、機械学習、統計グラフの作成に強い
  • 多くのことが数行で出来る
  • C++とも連携出来る
  • 長い歴史による圧倒される便利なパッケージ集
  • 源流はAT&T Bell研究所の統計学者によって開発されたS言語
  • 使用者層が近いのもあって、PythonのツールはRでの使用も想定されているものが多い(Jupyter Notebook,Anaconda等)
  • 変数は動的型付けで、Rの流儀は「1行で済ませる」

Rの開発環境 RStudio

  • RStudioは使いやすくて多機能なIDE
    (そしてVisualStudio等と比べてUIが優しい = 直感的です)
  • Rのコード開発支援のほか、グラフ表示から後述のRMarkdownの機能があるなど超便利
  • Rを使う上でこだわりがないなら、Rstudioは使ってみましょう
    https://rstudio.com/

Introduction R

百聞は一見に若かず。使ってみます。

対話形式でR

まずはご挨拶!RStudioのコンソールにカーソルを合わせて

print("Hello World!")

直接表示してもいい

"Hello World"

変数の使い方はこんな感じ

num = 100
print(num * num)

printつけなくてもOK

num * num

代入演算子はこれでもOK

num <- 200
num * num

基本的な定数は定義されてたりする

print(pi)

関数のオプションは オプション名 = 引数 で指定できる。
digitsは表示する桁数を指定するオプション

print(pi, digits = 16)

Rファイルを作ってやってみる

File -> NewFile -> New RScript

実行してみる。

a = 100
b = 200
a + b

指定行実行

実行範囲を選んで、Runボタンを押す or Ctrl + Enter

全行実行

Ctrl + Shift + Enter

ベクトルを作る

Rのベクトルは、イメージは1次元配列(サイズ可変)

5から20までのベクトルを生成して代入

x = 5:20
x

seq関数を使う

x = seq(5,20)
print(x)

公差 = 2 で作ってみる

x = seq(5,20,by = 2)
x

lengthオプションで、等分して生成

x = seq(5,25,length = 4)
x

c関数で作ってみる。(combine=結合の意味)

x = c(1.3,4.3,4.6)
x

乱数生成で作ってみる

参考:http://cse.naro.affrc.go.jp/takezawa/r-tips/r/60.html

0<=x<=1 の一様乱数を作り出すrunif関数

x = runif(20)
x

正規分布に従って乱数を作り出す。

とりあえず日本人を作ってみる。

rnormは正規分布に従った乱数を生成する関数

国の統計データより、(https://www.e-stat.go.jp/dbview?sid=0003224177)

20歳男性のデータ

  • 平均身長:172.3
  • 標準偏差 6.9
x = rnorm(100, mean = 172.3, sd = 6.9)
x

グラフ化してみよう

hist関数で簡単にグラフを作成できる。

hist(x)

もっと数を膨大にしてヒストグラムを作ると?

x = rnorm(10000, mean = 172.3, sd = 6.9)
length(x)
hist(x)

様々なデータを取得する

まずは適当なベクトルを作って...

x = seq(1,20,by = 3)
y = x + runif(7,-1,1) # -1から1までの乱数を足す
x
y

いろいろな基本的な統計量(= 基本統計量)を計算させてみる

sum(x) # 和
mean(x) # 平均
max(x) # 最大値
min(x) # 最小値
range(x) # 範囲
sd(x) # 不変標準偏差
var(x) # 分散
cor(x,y) # 相関係数

グラフを表示してみる

参考

同志社大学のページ

明治大学のページ

まずはデータを表示するデータを読み込む。

Rにはデータセット(サンプルのデータみたいなもの)が用意されているので利用する。(data関数)

data("VADeaths")
print(VADeaths)

このデータは、50歳から74歳までのデータを5つに分けて、その死亡率を田舎(rural)、都会(urban)と男性(male)、女性(female)で分けたもの。(バージニア州の1940年のデータらしいです)

ということで、グラフを表示してみます。
まずは棒グラフを表示するbarplot関数

barplot(VADeaths)

積み重ねタイプがいやなら、

barplot(VADeaths, beside= TRUE)

タイトルも設定出来る

barplot(VADeaths, beside = FALSE)
title(main = "Deaths Rates (Virginia, 1940)", sub = "this is included by R Standard DataSet")

また、horiz = TRUEオプションで横棒にも出来る

barplot(VADeaths, horiz = TRUE)

おわりに

今回はExcelで出来そうな事をRでやる方法をご紹介しました。
この他多種多様のグラフが使え、またそのオプションも非常に豊富です。

?hist

と入力することでヘルプを参照出来ます。

この他にもRにはまだまだ様々なグラフ表示から複雑な統計、機械学習等のメインの機能があります。

そしてそれらの多くは数行で利用出来るように作られているのです。

どうでしょう?Rを学ぶことにモチベーションが湧いてきませんか?

また余力があれば続編を投稿していきます。
ありがとうございました。

12/18追記

続編です、p検定について触れてみましたが、Rの内容がほとんどないです...

13
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?