とある父親の妄想日記 -21ページ目

とある父親の妄想日記

地球上で唯一、DNA以外の手段で、世代を超えて情報を蓄積する力を授かった人類。
御来たる未来(みきみく)に、一かけらの希望と奇跡を信じています。
近況:サイバー攻撃と防衛の技術について妄想してます。

パパね。


最近気づいたけど


日頃の自分の言葉遣いや、行動を君はよく見て真似をするよね。


だから、汚い言葉や悪い行動をしないよう気をつけるよ(笑)



ご存知のかたもいらっしゃるかもしれませんが
少し前から、データサイエンティストと言う職種に
スポットがあたっているようです。

企業がためこんだデータを基に統計解析を行い、
経営判断に必要な分析を行う仕事のようですね。

いずれは、ロボット・人工知能によるデータ分析が主流になるでしょうが、
しばらくは、各企業内において蓄積したデータを
人間が吟味して選別・分析することで、
企業特有の情報資産になることかと思います。


本日は、統計学およびR言語について調べてみました。

統計学基礎 [ 日本統計学会 ]

¥2,376
楽天



■統計学メモ


「統計学は、経験的に得られたバラツキのあるデータから、
応用数学の手法を用いて数値上の性質や規則性あるいは不規則性を見いだす。」
(wikipediaより)


前例にこだわり過ぎる我々日本人には、
ぴったりな学問かもしれませんね(笑)


数学が得意な人はとっつきやすいかもしれません。
(私はかじった程度ですが(笑))
ここでは、簡単な備忘録メモとして、入門ワードをメモしておきます。

a.統計用語

_
y => y1, y2...ynの平均値(和の平均 = 算術平均(相加平均)、積の平均 = 幾何平均(相乗平均))


μ => 母集団の平均

σ^2 => 母集団の分散

Σ => 和の演算記号

Π => 積の演算記号


・偏差・・・平均から離れている程度を示す指標。R言語ではsd(x)。

・中央値R言語ではmedian(x)。

・分散・・・平均から離れている程度の量(絶対値)を示す指標。

・標準偏差・・・分散を平均と同じ単位で示す。分散の平方根。

・外れ値・・・例外値。標準化得点か箱ひげ図(株価の表示みたいなやつ?)により検討する。


b.分析手法

・相関・・・物事のかかわりの度合いを数値化して分析の判断材料に役立てる

・回帰分析・・・物事のかかわりの度合いを関数表現して分析・予測に役立てる

・決定木・・・判断基準と分岐を可視化して意思決定に役立てる


c.データ収集および分析のポイント

・個々のデータは「ベルヌーイ試行(コインの裏表が出る確率のように、排反事象による確率試行)」であるか、「独立」か、「条件付き確率」か。

・データ分布はどのようになっているか、外れ値はどの範囲が妥当か。

・分析対象の2軸に何を選定するか。その軸の切り口は意味のあるものか。なんのための分析か。


■R言語メリットメモ

http://www.r-project.org/

今回調べて感じたことは、
ビジネスで利用する実用的なプログラミング言語を
一つ選ぶとすれば、間違いなくR言語を私は選ぶ
ということです。

R言語は統計学に基づいた処理や、分析図の描画を効率的に行えるような
機能一式が揃っているオープンソースのプログラミング言語です。




1.メリット

・トライ&エラーで容易に分析が行える


高水準のインタプリタ言語のため、試験的な実行・分析が即座に行えます。
また、学習コストが低いのでとっつきやすい言語になります。

・色んな分析やレポート作成が少ない記述で実現できる


分析したいデータのサンプルを抽出して、
加工したのち分析をすると思いますが、
R言語では、分析関数やグラフ描画関数が用意されているため、
従来の複雑なプログラムを組まずに、簡単にデータの分析が行えます。


2.デメリット


・統計学の知識が必要となる

ただし、データ分析を行うには、統計学の知識が必要なため、
私は、統計学とR言語をあわせてひとつのスキルセットとなると思っています。

ですので、多角的で効果的かつ有意義な分析を行うためには、
統計学の知識が必要となると感じています。

そこが、プログラマには少しハードルの高いところかもしれません。

※統計学は、心理学、教育学、経済学、社会学、数理科学、工学、医学、薬学
どの分野でも役に立つ学問ですので、専門スキルとして学習しても損はないと感じます。

そして、セブンイレブンの鈴木敏文氏も学生時代に学んだ統計学は、
「統計心理学」として役に立っていると言うほどですから、実用的なのでしょうね。


・通常の汎用プログラミング言語で実装可能な機能が少ない


メール送信とか、データベース、web, GUIのシステム構築は、
高水準の汎用プログラミング言語と比較して、ちょっと不便そうに感じます。
(まだあまり、使用していないので、誤りがありましたらご指摘ください。)


3.その他


Shinyというフレームワークがあるそうです。


以下から、技術的な内容になりますので、
興味のある方だけご覧ください。



■Kali LinuxへR言語開発環境構築


windows OS向けの環境構築はこちらになります。


1.R言語開発環境(R, Rscript)のインストール

インストール作業は管理者(root)権限で行います。


# リポジトリのアップデート
apt-get update



# libjpeg62ライブラリが必要なため、インストール
apt-get install libjpeg62



# R言語のインストール
aptitude install r-base


2.R言語向けIDE(画面で操作できる統合開発環境) RStudioのインストール


ブラウザで、以下URLへアクセスRStudio(gui)


「RStudio 0.98.1103 - Debian 6+/Ubuntu 10.04+ (32-bit)」のdebianパッケージをダウンロード。
※あるいはコマンドラインから以下コマンドでダウンロード


# rstudioをダウンロードサイトから、バージョンを指定してダウンロード
wget http://download1.rstudio.org/rstudio-0.98.1103-i386.deb



# ダウンロードしたdebianパッケージを基に、rstudioのインストール
dpkg -i rstudio-0.98.1103-i386.deb



デスクトップ左上の「アプリケーション」メニューから
「プログラミング」→「RStudio」で起動
できます。


■R言語を動かしてみる


[参考サイト]
R言語の備忘メモ

R-Tips


1.変数の代入と演算


RStudioで、1行ずつ実行して挙動を確認します。

データの型として特殊なものは、
ベクトル(配列とおなじ認識で良い?)、
行列、データフレーム、虚数でしょうか。

動かしてみると、結構楽しいです。



虚数

# 虚数を変数aaaに代入
aaa <- 4 - 2i

# 変数aaaの中身を表示
aaa
[1] 4 - 2i

# 変数aaaの値を2乗してみる(16 - 16i - 4)
aaa ^ 2
12-16i




文字列

# 文字列"egg"を変数aaaに代入
aaa <- "egg"

# 変数aaaの内容に"toast"を連結
aaa <- paste0(aaa, "toast")

# 変数aaaの内容を表示
aaa
[1] "eggtoast"




ベクトル(文字列)

# 文字列ベクトルを変数aaaに代入
aaa <- c("apple", "banana", "grape")

# 変数aaaのベクトルに1番目の要素は”Juice”、残り二つの要素は"jam"を連結
paste(aaa, c("Juice", rep("jam",2)) )
[1] "apple Juice" "banana jam" "grape jam"




行列

# 1から8までの値をもって、4行2列の行列を作成し、変数aaaに代入
aaa <- matrix(1:8, nrow=4, ncol=2)

# 変数aaaの内容を表示
aaa

[,1] [,2]
[1,] 1 5
[2,] 2 6
[3,] 3 7
[4,] 4 8



2.図の描画



棒グラフ

# 2012から2018の数値ベクトルを変数xに代入
x <- c(2012:2018)

# 7要素の数値ベクトルを変数yに代入
y <- c(120, 300, 250, 170, 400, 600, 650)

# 変数x(リスト名a)及び変数y(リスト名b)のベクトルを持つリスト変数listdataを作成する
listdata <- list(a=x, b=y)

# 変数listdataの内容を表示する
listdata

$a
[1] 2012 2013 2014 2015 2016 2017 2018

$b
[1] 120 300 250 170 400 600 650

# 変数listdataのaリストを表示する
listdata$a

[1] 2012 2013 2014 2015 2016 2017 2018

# 棒グラフ分布図で変数listdataの内容を表示する
barplot(listdata$b, names.arg=listdata$a)




ヒストグラム

# x,yからなるデータフレームを変数dataframeに代入
dataframe <- data.frame(x, y)

# 変数dataframeの内容を表示
dataframe

x y
1 2012 120
2 2013 300
3 2014 250
4 2015 170
5 2016 400
6 2017 600
7 2018 650

# グラフ描画パッケージ読み込み
library(lattice)

# dataframeをヒストグラムとして描画
histogram(y ~ x, data=dataframe)




線グラフ


# f(x)=「2×xの三乗」+「3×xの二乗」+ 「2×x」+ 15の関数式を定義する
f <- function(x) {
# 数値でなければ欠損値
if(!is.numeric(x)) {
return(NA)
}
return(2 * x^3 + 3 * x^2 + 2*x + 15)
}

# f(x)の関数について、x=-5,-4...5の範囲でグラフを描画
plot(f, -5,5)




三次元グラフ

# x軸の幅を定義
x <- c(-5:5)

# y軸の幅を定義
y <- c(-5:5)

# z軸の関数式(xとyとの回帰分析の式などを定義)
z <- function(x,y) {
5 * sin(x) + cos(y)
}

# 3次元プロット図を定義
z <- outer(x, y, z)

# 3次元プロット図を描画
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "lightblue")


では、よい統計解析ライフをお過ごしください!