2015年6月7日日曜日

つまずかないR言語入門(アソシエーションルールのサポート、コンフィデンス、リフト)

アソシエーションルールは、マーケティングの世界では、マーケット・バスケット分析として、
筆者が想像していた以上に、かなり現場に近いところで使われていることがわかってきた。

さて、今まで記述するのを先送りしてきた、アソシエーションルールにおける、
サポート(support)、コンフィデンス(confidence)、リフト(lift)について、理解した
内容を備忘録として、記述します。

説明を簡単にするために、3回前の記事 で説明します。
サポートは、トランザクション中に、2つ以上の品目が発生する比率で、筆者が作成した例では
10トランザクション中3件肉とミルクの組み合わせが発生、同様に、人参と肉を買った場合、
ポテトを同時に買うケースが20%あったということになる。

コンフィデンス(confidence)は確信度の意で、条件付き確率ということで、
品目Aを含むトランザクションで品目Bを含む比率を指す。
confidenceの高いルールは良いルールと言われる(そうだ)。

リフトは、品目Aと品目Bが同時に現れる確率が、品目Aと品目Bが単独に買われる
確率の何倍かを示している。リフトが1以上であると有効なルールであると言われる。

事例が人口的なものなので、lift=10となっているが、正直少々不安ではある。

精進します。


----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年5月30日土曜日

つまずかないR言語入門(実際のアソシエーションルール当てはめ)

前回まで、アソシエーションルールに関するパッケージや
ツールについて、自分なりに理解が出来た。
前2回は、自分で勝手に作成したデータなので。
とても実態を反映しているとはいえない。
そこで、ここ1週間ほど、リアルなデータで実証して
みたく、いろいろ悩んでいたところ、あるデータを
入手することができた。
得意先名などを特定できない、災害避難用品の購入データ
を入手出来たので、これで実証実験を行ってみた。

ところが、データを見ると、商品名の入力のバラつきが
大きく、aprioriを当てはめても、明確なルールが得られないことが
わかった。
一例を上げると、「乾パン」と「カンパン」、「乾パン20箱」などは
全て、別物として扱われるため、相関ルールとして
うまく当てはめが出来ないことがわかった。
このような場合、一般には、商品コードか中分類に立ち返って
再度ルールを適用するのだろうが、残念ながら今回はその
ようなデータがない。
仕方がないので、csvファイルを、出来るだけ製品のもつ
性格を変えないように名称を修正して実行した結果が
次のようなものになった。
データとしては23行、最大17アイテム、最小7アイテムがバスケットに
入っているとお考えください。
以下手順。
> library(arules)
要求されたパッケージ Matrix をロード中です

次のパッケージを付け加えます: ‘arules’

The following objects are masked from ‘package:base’:

%in%, write
> bs.bas<-read.transactions(file="saigai.csv",sep=",",
+ format="basket",rm.duplicate=TRUE)
distribution of transactions with duplicates:
items
1 2 4 7 8 9 10 11 12
1 1 1 2 1 11 3 1 1

参考にさせていただいているJIN'S PAGEに従って
「データを処理する際には、まずデータの概観を把握することが重要である。
パッケージarulesには、トランザクションデータのアイテムの頻度の棒グラフを
作成する関数itemFrequencyがある。」
となっていたので、納得して実行した結果は次の通り。


何が何だかわからないが、データを手作業で修正しても、このような
アイテム数なので、真の意味のビッグデータを扱うことの難しさを実感した。

それはさておき、aprioriを実行すると、
> bs2.ap<-apriori(bs.bas)

Parameter specification:
confidence minval smax arem aval originalSupport support minlen
0.8 0.1 1 none FALSE TRUE 0.1 1
maxlen target ext
10 rules FALSE

Algorithmic control:
filter tree heap memopt load sort verbose
0.1 TRUE TRUE FALSE TRUE 2 TRUE

apriori - find association rules with the apriori algorithm
version 4.21 (2004.05.09) (c) 1996-2004 Christian Borgelt
set item appearances ...[0 item(s)] done [0.00s].
set transactions ...[97 item(s), 23 transaction(s)] done [0.00s].
sorting and recoding items ... [18 item(s)] done [0.00s].
creating transaction tree ... done [0.00s].
checking subsets of size 1 2 3 4 done [0.00s].
writing ... [57 rule(s)] done [0.00s].
creating S4 object ... done [0.00s].
となり、
> inspect(head(sort(bs2.ap,by="confidence"),n=5))
lhs rhs support confidence lift
1 {保存用醤油せんべい} => {} 0.1304348 1 1.150000
2 {防災セット} => {乾パン} 0.1304348 1 1.642857
3 {防災セット} => {} 0.1304348 1 1.150000
4 {携帯AMラジオ} => {} 0.1304348 1 1.150000
5 {携帯充電器} => {} 0.1739130 1 1.150000

なんとなく、防災セットを買うひとは乾パンも買うのだろうと、
ごく自然なルールが導出されて、納得。

たまたま、本日2015年5月30日20時23分に小笠原沖で
マグニチュード8.5の巨大地震が起きて、筆者の地域も震度4で
かなり怖い思いをした。
たまたまデータをみて、改めて防災用品と備蓄食料を用意しなくては
ならないと、実感した。

support、confidence、liftについて触れようと思ったが、次の機会に
いたします。
p>
----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年5月13日水曜日

つまずかないR言語入門(アソシエーションルール再び)

前回のエントリーで、アソシエーションルールを試してみた。
テクニカルな部分さえ押さえれば、結果がでることは理解できたが、
元のデータが筆者の妄想の産物なので、いま一つ納得感に欠ける
結果となった。

そこで、前回のデータを膨らませて、件数も増やして、再度トライ
することとした。

データは、csv形式で、20レコードをもつ、”basket2.csv”という
データを作成した。

以下手順。
Rを立ち上げ、
> library(arules)
としてライブラリーを呼び出す。
次に、
> b2.bas<-read.transactions(file="basket2.csv",sep=",",format="basket",rm.duplicate=TRUE)
とするが、前回同様に、
distribution of transactions with duplicates:
1
5
という表記で、なにか叱られるが、とりあえずスルーする。
> b2.ap<-apriori(b2.bas)
を実行すると、10数行のコメントがでるが、なかに
writing ... [78 rule(s)] done [0.00s].
とあり、このような数量でも、78のルールが生成されたようだ。

さらに、
> inspect(head(sort(b2.ap,by="support"),n=5))
として、support順にルールを表記させると

 lhs rhssupportconfidencelift
1{meat}=>{} 0.400.81.142857
2{cabbage} =>{meat}0.251.02.000000
3{butter} =>{bread}0.201.02.500000
4{butter} =>{}0.201.01.428571
5{cabbage} =>{}0.200.81.142857

キャベツを買うひとは肉を同時に買うということと、
バターを買う人はパンも同時に買い物バスケットに入れる
ということを明示してくれる。

ここで、先週来学んだことを備忘録的に記載すると、
aprioriアルゴリズムでは、confidence(信頼度)とsupport(支持度)、
lift(2つの事象の独立性をみる指標)で表される。
supportは、lhs(条件)とrhs(結論)を同時に満たすtransactionが、
全transactionにしめる割合をしめす。
また、confidenceは、lhs(条件)が発生したときに、rhs(結論)が
発生する割合を示す。

今回の適当な事例を無理やり解釈すると、全20トランザクションで
キャベツ⇒肉は25%、バター⇒パンは20%を占めている。
confidenceは2例とも、1.0でlhsとrhsの結びつきが強いことを示している。
liftは1より大きいと、そのルールは有効なルールと考えられる
(*www.itmedia.co.jpのサイトを参照)ので、理論的にも計算は正しいと理解した。

今更であるが、Rを使おうとする筆者のようなものは、Rをツールとして
操作出来ることはもとより、統計学の基礎もしくはそれ以上の知識を身に
つけないと、数値のもつ意味を捉え損なうおそれがあり、その意味で、
「Rは誰でも使えますよ」風の講習会はいかがなものかと思った次第です。


----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年4月25日土曜日

つまずかないR言語入門(アソシエーションルール、バスケット分析)

ようやく、通常の仕事に近い領域が扱えそうになってきた。

「いまさら」といわれそうだが、データマイニングという単語が広く
知られ始めたころに、オムツとビールの話が必ずと言ってよいほど、語られた。

"「商品Aを買うと商品Bも買う」のようなルールを簡潔に、{A}⇒{B}と
表すことにする。相関ルールは、通常X⇒Yの形式で表す。ルールの「⇒」
の左辺を条件部(antecedent: left-hand-side or LHS)、右辺を結論部
(consequent: right-hand-side or RHS)と呼ぶ。最も広く知られている
相関ルールを検出するアルゴリズムはAprioriである。"
同志社大学「R、R言語、R環境・・・・・・」より引用

以来、色々な論文を読んだりしたが、「apriori」という単語が出てきて、
もともとの意味は、「あらかじめ決められた」という意味らしいが、そう
いう文脈で使われたのは理解できたが、さらに調べると、IBMが
開発した、アソシエーションルールの関数であることがわかった。

まず、「arules」というパッケージをインストールする。
いつものように身近なミラーサイト(筆者の場合、TSUKUBA)を選び、

> install.packages("arules")
を実行。

URL 'http://cran.md.tsukuba.ac.jp/bin/windows/contrib/3.1/arules_1.1-6.zip' を試しています
Content type 'application/zip' length 1803031 bytes (1.7 MB)
開かれた URL
downloaded 1.7 MB

パッケージ ‘arules’ は無事に展開され、MD5 サムもチェックされました

ダウンロードされたパッケージは、以下にあります
C:\Users\xxxxx\AppData\Local\Temp\RtmpWs7VDR\downloaded_packages

と表示されインストール成功。

その前に、著作権に問題が起きないように、自分の日常生活でスーパーで
買いそうなアイテムを適当に作成し、basket1.csvtとして、作業フォルダーに
保存しておいた。
---2015年6月7日修正(basket1.csvのデータに空の行が入っていたためイタリック体の部分を以下修正します--

meat,potato,milk,carrot
bread,milk,jam,ham,lettuce
rice,potato,carrot,meat,milk
cheese,ham,beer,potato
cabbage,beef,carrot
juice,water,milk,potato
coffee,milk,bread,butter
beans,tomato,pasta
bread,meat,milk,juice
bread,cabbage,chicken,juice

> library(arules)

> b.bas<-read.transactions(file="basket1.csv",sep=",",format="basket")
以下にエラー asMethod(object) :
can not coerce list with transactions with duplicated items

重複したitemsがあるとのことで、rm.duplicate=TRUEとすることした。

> b.bas<-read.transactions(file="basket1.csv",sep=",",format="basket",rm.duplicate=TRUE)

ここで「apriori」を適用すると

> b.ap<-apriori(b.bas)

Parameter specification:
confidence minval smax arem aval originalSupport support minlen maxlen
0.8 0.1 1 none FALSE TRUE 0.1 1 10
target ext
rules FALSE

Algorithmic control:
filter tree heap memopt load sort verbose
0.1 TRUE TRUE FALSE TRUE 2 TRUE

apriori(b.bas) 中で警告がありました:
You chose a very low absolute support count of 1. You might run out of memory! Increase minimum support.

apriori - find association rules with the apriori algorithm
version 4.21 (2004.05.09) (c) 1996-2004 Christian Borgelt
set item appearances ...[0 item(s)] done [0.00s].
set transactions ...[22 item(s), 10 transaction(s)] done [0.00s].
sorting and recoding items ... [22 item(s)] done [0.00s].
creating transaction tree ... done [0.00s].
checking subsets of size 1 2 3 4 5 done [0.00s].
writing ... [240 rule(s)] done [0.00s].
creating S4 object ... done [0.00s].

> inspect(head(sort(b.ap,by="support"),n=5))
lhs rhs support confidence lift
1 {meat} => {milk} 0.3 1 1.666667
2 {carrot,
meat} => {potato} 0.2 1 2.500000
3 {meat,
potato} => {carrot} 0.2 1 3.333333
4 {carrot,
potato} => {meat} 0.2 1 3.333333
5 {carrot,
meat} => {milk} 0.2 1 1.666667

という結論で、肉を買うと牛乳を買う可能性が高いという結論になった。

それぞれの意味の解釈は次のエントリーで行います。


----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年4月23日木曜日

つまずかないR言語入門(時系列、自己相関関数について)

時系列解析について、もう少し理解したくて、この1週間ほど、本を読んだり、
関連するWebを検索していた。

移動平均については、SMAを使うことができたが、その先になかなか進めない。

ようやく一つだけ、「自己相関係数」について、意味するところと、使用方法が
わかった。

例として、従前の東京の平均気温データをつかうこととした。

> temp<-read.table("kion.txt",header=TRUE,row.names=1)
> temp.ts<-as.ts(temp$ave)
> class(temp.ts)
[1] "ts"

時系列データであることを確かめたので、acf関数なる、自己相関
すなわち、過去の値とどれほどの相関があるかを算出する便利な
関数を使ってみる。

> acf(temp.ts)
とすると、

というグラフが生成される。

一方、acfの典型的な事例として、例のイギリスのガス消費量「UKgas」で、同じくacfを
使ってみる。

> UKgas
> acf(UKgas)

とすると、

UKgasのデータは、四半期単位でガス消費量を捉えているので、4四半期ごとに
強い正の相関が見て取れるので、季節変動要素が明確であることが判る。

では、先に計算した東京都の平均気温は?

年が過ぎればすぎるほど、過去の気温に影響を受けることがなく、結果的に
相関関係が弱くなっている。と解釈した。
平均気温の変化を解釈するモデルとしては、「適切でない」。というのが
結論かもしれないと感じた次第。(ややお粗末だが、勉強にはなった)


----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年4月16日木曜日

つまずかないR言語入門(時系列オープンデータの移動平均)

前回まで、気象庁のオープンデータで、平均気温の可視化や、トレンドを除去した偏差に
ついて記述してきた。

株価なども時系列データの典型であるが、例えば「5日移動平均線」は直近5日分の終値を
合計して5で割った株価を結んだものである。
日々の細かい値動きより、滑らかな傾向値をプロットすることで、
過去の経緯から、今後の株価を推測することが良くある。

そこで、移動平均についてお勉強!
まず、CRANからパッケージをダウンロードします。ミラーサイトは
なるべく近隣のサイトから選択します。

> install.packages("TTR")

これで、つぎのような表示がでます。
URL 'http://cran.md.tsukuba.ac.jp/bin/windows/contrib/3.1/TTR_0.22-0.zip' を試しています
Content type 'application/zip' length 283023 bytes (276 KB)
開かれた URL
downloaded 276 KB

パッケージ ‘TTR’ は無事に展開され、MD5 サムもチェックされました

ダウンロードされたパッケージは、以下にあります
C:\Users\xxxxxx\AppData\Local\Temp\RtmpYZXkVr\downloaded_packages

これで、TTRパッケージをよびだします。
> library(TTR)
要求されたパッケージ xts をロード中です
要求されたパッケージ zoo をロード中です

次のパッケージを付け加えます: ‘zoo’

The following objects are masked from ‘package:base’:

as.Date, as.Date.numeric

次に、東京の平均気温データを呼び出します。

> temp<-read.table("kion.txt",header=TRUE,row.names=1)
先頭6行を確認。
> head(temp)
jan feb mar apr may jun jul aug sep oct dec nov ave
1876 1.6 3.4 8.1 12.2 16.9 18.4 24.3 26.7 22.6 14.8 9.1 4.8 13.6
1877 2.9 3.3 6.0 13.5 16.4 21.9 26.2 25.7 21.1 15.6 9.3 5.7 14.0
1878 2.1 2.2 7.0 11.4 18.0 19.9 25.9 24.4 22.6 15.5 9.5 5.0 13.6
1879 3.1 5.2 7.9 12.2 17.9 21.4 26.1 26.5 21.0 14.7 9.4 7.8 14.4
1880 2.3 5.6 8.2 12.1 17.4 19.7 24.1 25.3 22.1 16.4 9.9 3.6 13.9
1881 2.0 3.4 5.1 11.3 17.0 21.2 23.8 26.5 22.4 15.5 10.8 4.1 13.6

属性を確認すると
> class(temp)
[1] "data.frame"

次に、時系列データにするために、年平均気温(ave)を抜き出します。
> temp.ts<-as.ts(temp$ave)
> head(temp.ts)
[1] 13.6 14.0 13.6 14.4 13.9 13.6
> class(temp.ts)
[1] "ts"
ということで、時系列データであることが確認できました。

> plot(temp.ts)
> temp.ts5<-SMA(temp.ts,5)
> par(new=T)
> plot(temp.ts5,col="blue")

このままでは、y軸の表記がおかしいので、

> plot(temp.ts,xlab="year",ylab="temp",xlim=c(0,150),ylim=c(12,18))
> par(new=T)
> plot(temp.ts5,xlab="year",ylab="temp",xlim=c(0,150),ylim=c(12,18),col="red")

この作業で、一年ごとの平均気温と赤色で5年移動平均がグラフ化できました。

細かい作り込みは、いま一つですが、時系列解析における移動平均が
ようやく理解できました。

Rは奥が深い。


----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年4月9日木曜日

つまずかないR言語入門(何を目的として時系列解析をするのか)

イギリスのガスの消費量や、東京の過去平均気温を、主にtsオブジェクトという形式で、
扱えることはできるようになった。(心もとないが)

ところで、時系列データは何を目的として解析するのか??

時系列のデータは、常に変動している。その変動の様子を解析して、過去のデータから将来の変動を
予測することが目的と考えられる。
ここで、時系列データは、統計的な性質が一定な定常時系列と、性質が変化する非定常時系列に
分類される。
詳細は専門書に譲るとして、UKgasの時系列をプロットすると、下図の左側のようになる。
季節変動を含みながら、右肩上がりのトレンドを示している。
ここで、差分(階差)・・値⊿yt=yt-yt-1を操作することで、線形関係にあるトレンドを
除去することができる。

> par(mfrow=c(1,2))
> plot(UKgas)
> plot(diff(UKgas))
とすることで、下図右側のトレンドを除去したグラフを描くことが出来る。

同様に
> par(mfrow=c(1,2))
> plot(tokyo.kion.ts)
> plot(diff(tokyo.kion.ts))
といった操作で、東京の平均気温の右上がりトレンドを除去したグラフを描くことが出来る。


さらに深い考察は、すこし専門書を十分理解した段階で、改めて記述したいと思います。

----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年4月7日火曜日

つまずかないR言語入門(時系列について、その2)

前回までで、東京の1876年からの気温の変化を時系列オブジェクトtsを
使用して、平均気温の変化をプロットすることまで出来た。

ところで、Rをインストールした時に、UKgasといって、1960年から1986年
までのイギリスのガス消費量を四半期ごとに記録したデータが付随してくる。

> UKgas
と入力すると

 
Qtr1Qtr2Qtr3Qtr4
1960160.1129.784.8120.1
1961160.1124.984.8116.9
1962169.7140.989.7123.3

以下省略

と表示され、

> class(UKgas)
[1] "ts"
として、属性が時系列であることが判る。

> ts.plot(UKgas)
とすると、

ここで、疑問が起きる。

R付随のUKgasは、四半期単位(frequency=4)という条件で、グラフ化しても、
上記のように、Qtr単位で表示されている。

ところが、東京の平均気温を各月単位(frequency=12)で、時系列データとして
グラフ化しても、エラーが出て、出力できない。
平均気温単体なら、各年度ごとにグラフ化できるのはわかったが、UKgasのデータ
と同じように、月単位での出力ができないのはなぜか。

全然勉強たりないと痛感。

----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年4月3日金曜日

つまずかないR原語入門(時系列データの処理について)

前回までで、、国土交通省気象庁の過去の気象データを使用して、年間平均気温と、
各月の平均気温をapplyというコマンドで求めることが実証できた。

今回は、同じ気象データをつかって時系列の処理にトライしてみる。

Rでは時系列データの操作・分析用には何種類かのアプローチがある
ようだが、今回は時系列データをts(time seriesの略)オブジェクトという
形式で扱うことにした。
tsオブジェクトを生成するには、tsコマンドを使う。
明治からの東京の平均気温を再度求めてみる。

>b<-read.table("kion_b.txt",header=TRUE)
変数bに、1876年からの各月単位の気温を代入。
>year.means<-apply(b,1,mean)
applyコマンドで、各年の平均気温をもとめ、year.meansという変数に代入。
次に、これをtsオブジェクトとして生成する。
frequencyとは周期が1年単位であることによる。

>year.means.ts<-ts(year.means,frequency=1)
スタート年を明示するため、start=c(1876)として、グラフを描かせる。
>plot(year.means.ts<-ts(year.means,start=c(1876),frequency=1),ylab="temperature")

こうしてみると、ヒートアイランド現象と、地球温暖化の影響で
1960年以降、急激に東京の平均気温が上がっていることが、可視化できる。

本当は、各年の1月~12月と翌年の1月~12月以下同様と、連続して
描画したかったのだが、勉強不足で、そこまでたどり着きませんでした。

Rは奥が深い。でも深いから面白いし、勉強しがいがあるというものだ。

----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年4月2日木曜日

つまずかないR言語入門(applyの続き)

前回は、国土交通省気象庁の過去の気象データを使用して、
明治9年からの各月の平均気温から年間平均気温を算出するのに、applyを 使った。
表計算でいう、行単位の計算になる。

では、列単位の計算方法は。
列の場合は、applyの2番目の引数を2に帰るだけで実行できる。

> b<-read.table("kion_b.txt",header=TRUE)
> year2.means<-apply(b,2,mean)
> year2.means

janfebmaraprmayjun
4.1244604.764027.85251813.39136717.68705021.185612
julaugsepoctnovdec
25.02014426.41007222.77697816.96402911.6165476.599281

次回以降、時系列の見方について試行しようと思います。
----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年4月1日水曜日

つまずかないR言語入門(関数applyをつかったプログラム。applyは使い勝手が良い)

前回、R言語でのプログラミングの試行をしてみた。
今回は、「apply」をつかったプログラミングを試してみた。
データを持ってくるのに、著作権の問題などありそうなので、
国土交通省気象庁の過去の気象データが公開されていたので、
そこから、東京の日平均気温の月平均値(℃)の数値を使わせてもらうこととした。
データはなんと1876年(明治9年)から、途切れなく記録 されている。
気象庁の歴史によれば、 1875年明治8年6月1日から、東京府第2大区(のち赤坂区)
溜池葵町内務省地理寮構内で 気象業務を開始(気象庁の前身東京気象台)、
地震観測と1日3回の気象観測を開始。 とあるので、丁度その翌年明治9年からデータがあるのも納得できる。
日本人て、几帳面で、江戸時代からわずか8年で、このような記録をのこしていたとは
驚きと、賞賛の気持ちになる。
閑話休題。
気温データをコピーして、メモ帳に貼り付けます。
この際、以前も言い訳しましたが、ヘッダー行の漢字が面倒なので、
1月→jan、2月→feb以下同様としています。
また、applyの効果を確かめやすくするので、元データから年の値(平均値) を、
手作業で削除しています。 こうして手を加えたデータを、"kion_b.txt"として、
作業フォルダーに 格納します。
Rを立ち上げて、
> b<-read.table("kion_b.txt",header=TRUE)

として、138年間×12ヶ月分の各月の平均気温を
変数bとして格納します。

次に、
> year.means<-apply(b,1,mean)

これで、year.means というベクトルに 138年間の年間平均気温が計算され格納されます。
apply に渡す最初の引数はデータフレーム(この場合b)です。
2番目の引数 1 は、一行ごとにまとめて関数に渡すことを意味します。
3番目の引数は関数名で、この場合は 平均値を求めるための"mean" です。
実際に、どうなっているかというと。

> head(year.means)

187618771878187918801891
13.5750013.9666713.6250014.4333313.8916713.59167
と表示されてます。

apply関数は使いこなすとかなり便利だと思います。

次回は、縦方向の列の計算を試行してみます。

----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年3月30日月曜日

つまずかないR言語入門(ファイルの読み、書き、簡単なプログラム)

オープンデータの読込について、何回か繰り返し実施した。

readはなんとなく慣れてきた。
先頭行に列名があり、区切り文字がスペースの場合は
read.table("filename.txt",header=TRUE)
execelなどから変換した際によく使うcsv形式は
read.csv("filename.csv",header=TRUE)はread.table("filename",header=TRUE,sep=",")と同じ。
TAB区切りの場合は、
read.delim("filename.txt")はread.table("filename",header=TRUE,sep="\t")と同じ意味になる。

ではRで処理した結果を、ファイルに書き出す方法は
どうするのか?
例えば、

> g<-c(1,2,2,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6)
> g
[1] 1 2 2 3 3 3 4 4 4 4 5 5 5 5 6 6 6 6
> write(g,"testfile,txt",ncolumns=1)
>
とすると、Rの作業フォルダーにtestfile.txt名で
ファイルが保存されているはずです。

さて、すこし進んで、簡単なプログラム構文の例を考えたい。
while文である。
while分は与えられた条件が成立している間、与えられた手続きを
繰り返す構文となっている。

例として、
初期値を1として、xが10になるまで1行に書くとすると、
> x<-1
> while(x<=10)
+ {print(x);x<-x+1}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
>
こんなふうになる。

同様に、1から11までの奇数を一行に記述するには

> f<-1
> while(f<=11){print(f);f<-f+2}
[1] 1
[1] 3
[1] 5
[1] 7
[1] 9
[1] 11

という感じで直感的に理解出来る内容だ。

----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年3月28日土曜日

つまずかないR言語入門(板橋区商業施設で駐車場の有無について考察)

前回、板波区の商業施設で、駐車場の有無は、売上をt検定を用いて検定したが、
(p>0.05)となり有意差は認められなかったとした。

では、同様に駐車場の有無は、従業員一人あたり売上に差を生むのか。
Rを使って、t検定までやってみます。

> x<-read.table("attach_20.csv",sep=",",header=TRUE,row.names=1)
> n<-c(x$sales_n/x$employee_n)
> p<-c(x$sales_p/x$employee_p)
箱ひげ図を見てみると

> boxplot(p,n,names=c("parking","noparking"))

となりました。

となりました。
t検定を進めます。
> t.test(p,n,var.equal=T)

Two Sample t-test

data: p and n
t = 0.299, df = 52, p-value = 0.7661
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-4.262274 5.754990
sample estimates:
mean of x mean of y
15.61962 14.87326

となり、検定結果としてはt検定を用いて検定したが、
(p>0.05)となり、有意差は認められなかったとした。

売上高同様に、従業員一人あたりの売上も、駐車場の有無による有意差は
認めらなかったということでした。

----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年3月26日木曜日

つまずかないR言語入門(t検定)

自分自身のスキルアップを大きな目的にしているので、行きつ戻りつして
まだるっこしいところがあるのはご容赦ください。

さて、前回、例えば駐車場がある店舗数とそうでない店舗数を比較しました。
箱ヒゲ図では、

となりました。
では、駐車場のある店舗とない店舗数の平均値の差の検定(t検定)を行ってみたいと
思います。

> t.test(x$shop_n,x$shop_p,var.equal=T)

Two Sample t-test

data: x$shop_n and x$shop_p
t = 3.7, df = 54, p-value = 0.0005067
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
42.14835 141.85165
sample estimates:
mean of x mean of y
107.35714 15.35714
t値=3.7 自由度54、p値=0.0005057

帰無仮説として、平均値における真の差は0である。
p値が有意水準1%以下を下回っているので、帰無仮説を棄却
することが妥当という結論になる。

砕けていうと、板橋区の商業施設の駐車場のある店と、ない店の平均数は有意差が
あるということになる。
板橋区の商業施設は、平均的には駐車場を必要としない、商店街が並んでいるような
イメージなのかもしれない。
では、駐車場のある、無しで平均売上に有意な差があるかを検討してみる。

> t.test(x$sales_n,x$sales_p,var.equal=T)

Two Sample t-test

data: x$sales_n and x$sales_p
t = 1.0512, df = 54, p-value = 0.2978
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-3586.677 11493.534
sample estimates:
mean of x mean of y
9314.786 5361.357

t値=1.0512 自由度54、p値=0.297
帰無仮説として、平均値における真の差は0である。
p値が有意水準約29%という結論になり、帰無仮説を棄却できない、つまり
板橋区の商業施設の駐車場のある店と、ない店の平均売上高は有意差が
ないということになる。

箱ヒゲ図で見てみると、

なんだか、腑に落ちない結論(ほんまかいな?)ではあるが、微力な筆者がRを使った結果ではある。
勉強たりないな!

----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年3月22日日曜日

つまずかないR言語入門(板橋区のオープンデータ)

板橋区のオープンデータを活用して、Rで分析の試みようとしたが、
とんでもないところで、躓いてしまった。
このブログを作成しているHPのデスクトップはOSはWindows7だが、office系は
オープンソフト優先でOpenofficeを使っていた。
今回、板橋区のデータを取り込み、csv形式にするにあたり、漢字の文字バケに
悩まされた。
NECのマシンはUBUNTUなので、Libreofficeがインストールしてあり、これで
データを散り込むと、すんなり文字問題が解消した。そこで、このHPマシンにも
Libreofficeをインストールして、使ってみると、見事に文字問題が解消したので、
ようやく本題に入れることとなる。

ここで、データに多少の加工を加えている。
板橋区の各業種の店舗数や、従業員数の総数と、それぞれの駐車場を持っている店舗の
数値は記載があるが、駐車場がない店の記載がないので、表計算上で、非駐車場の
店舗数などは計算をして、保存してある。
あと、header部分は本来漢字であるが、Rのコマンド入力があまりに煩雑になるので、
英語表記にしてある。
最後に、オリジナルがMSのexecelなので、オープン系officeで開いたためなのか、
千の位の表記がcsvに変換すると、空白になり、数値と看做されないため、
計算ができなかった。 そこで、手作業で、空白を除去するという作業をしたことをお断りしておきます。
ファイル名は、attach_20.csvとしています。
まずは、全体像がみたいので、
> x<-read.table("attach_20.csv",sep=",",header=TRUE,row.names=1)
とします。
先頭6行をみると


となり、
例えば駐車場がある店舗とそうでない店舗を比較すると。
> boxplot(x$shop_p,x$shop_n,names=c("parking","noparking"),col=c("orange", "green"))
としてみると、

となり、駐車場を持たない、あるいは必要としない商業施設が多いことが判る。
箱ひげ図の最大値を超えたはずれ値は、それぞれ自動車小売業と飲食料小売業で、
「なるほど」という納得感のある結果となった。

それでは、駐車スペースを持っている業種別の店の数を棒グラフで表すと、

となる。
お断りしなくてはいけないのが、X軸の業種名で、フルネームでこのスペースには
押し込めなかったので、業種記号で代用しています。
現地調査をしなくては正しい判断はできないのですが、板橋区という特性から
駐車場の必要性が今後の分析でわかるかもしれないと期待してます。

本日はここまでです。

----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年3月20日金曜日

つまずかないR言語入門(オープンデータの取り扱いに苦慮)

つまずかないR言語なんて、大見得切ったけど、昨日来、板橋区の 商業データと悪戦苦闘。

漢字の問題で、漢字コードに由来するエラーが頻出。

クリアしたものの、今度はRのコマンドラインに、ANKと漢字を
$マークで区切っても、すんなり読み込んでくれない。

つきましては、再度力量不足を反省しつつ、本日はギブアップ
です。

皆様申しわけないです。m(_)m

----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年3月19日木曜日

つまずかないR言語入門(板橋区商業統計を使ってすこしレベルアップ(?)

板橋区の商業統計を使って、すこしレベルアップを図りたい←自分
ここには、クリエイティブ・コモンズ・ライセンスの明記がないので、
商用目的につかうのではなく、あくまでも私的な勉強の使うといことで、
多少の改変はご容赦頂きたい。

余談ですが、オープンデータであろうが、プライベートな私企業の データであろうが、
統計分析に使おうと考えるデータは、ほぼ100%そのまま使えることは
なく、データ形式の統一や、欠損値の扱い、カンマの処理、ヘッダー部分の
処理などに、かなりの時間を費やすことを覚悟して置いた方が、よろしいと思います。

閑話休題: 今回は、
板橋区の平成19年商業統計調査報告
を使います。
このようなエクセルデータです。

今回、商業施設で、駐車場があるかないかで、色々な数値が変化している
ようなので、そいつを分析してみようかと考えました。


CSVファイルに落とし込むとこのようになりました。


続きは、次回ということでご容赦ください。

----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年3月16日月曜日

つまずかないR言語入門(埼玉県の商業データグラフ化から学ぶこと)

しつこいようですが、昨日に引き続き、埼玉県のオープンデータ(商業統計)から
分析~グラフ化の手順にトライしてみる。
元のデータは

このデータのお互いの関係を概観するのに、

ここで、従業員数と売上に相関関係が強くありそうだと、目安をつけたら

> plot(employee~sales,x)

として、見事に相関関係があるのが理解できる。

相関係数は

> cor(x$employee,x$sales)
[1] 0.9398025

となり、当たり前の結果といえば当たり前の結果となった。
このあたり、自分の力量と、オープンデータの活用がミスマッチしている
とも思えるので、少し研究して次回に備えます。

----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年3月15日日曜日

つまずかないR言語入門(埼玉県のオープンデータを使って)

いままで、長野県須坂市のオープンデータを使わせて戴いていたが、
今回、埼玉県のオープンデータが公開されているのを見て、
同じような分析をして見たい。

埼玉県オープンデータカタログ2014試行版が公開されている。
そこの県政情報・統計ページに、商業統計があり、須坂市と規模は違うが、
同様趣旨のデータを発見したので、読み込んでみた。
概要表(概要表-1~概要表-26)のエクセルファイルに平成19年商業統計調査概要一覧
があり、事業者数・従業者数、年間昇進販売額の推移を表した表があるので、
使用します。

EXCELファイルをダウンロードして、(私の場合はOpenoffice)で、開き
csv形式で保存。
漢字コードの問題(Shift-JIS,unicode,UTF-7)など、込み入っているので、
余分な説明を削除し、タイトルをshop,employee,salesとして保存。
ファイル名は"saitama.csv"とした。


> x<-read.table("saitama.csv",sep=",",header=TRUE,row.names=1)
として、
> summary(x)と入力すると

    shop    employee     sales  
Min.   :56427   Min. :220782    Min. :2.709e+08
1st Qu.  :63216   1st Qu.:327969    1st Qu.:8.864e+08
Median   :68882    Median :422684    Median :1.436e+09
Mean   :66822    Mean :389338    Mean :1.226e+09
3rd Qu.  :71908    3rd Qu.:462440    3rd Qu.:1.701e+09
Max.    :75330    Max. :504982    Max. :1.807e+09

前回同様グラフ化してみた。

> barplot((x$sales)/(x$employee),main="uriage/man",names.arg=c("49","51","54","57","60","63","3","6","9","11","14","16","19"),col=c("orange"))

と、平成3年をピークとしながらも、一人当たりの販売高が向上しているのが見て取れる。

年間売上高を見てみる。 >barplot((x$sales),main="uriage",names.arg=c("49","51","54","57","60","63","3","6","9","11","14","16","19"),col=c("blue"))

平成3年(1991年)に始まったとされるバブル崩壊が、グラフでも明確に読み取れる。
本日はここまでです。

----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年3月14日土曜日

つまずかないR言語入門(グラフの修飾)

前回エントリーで、長野県須坂市のオープンデータから商業において、従業員の数は増えていないのに 売上が伸びているのが判り、グラフ化した。

そのグラフがあまりに貧弱で、人前に出せるものではないので、今回は各種コマンドで
他人がみて、納得できるグラフ作りを試みる。

例によって、

> x<-read.table("08.csv",sep=",",header=TRUE,row.names=1)

で、変数Xを呼び出す。

つぎにグラフ化するに、前回は

> barplot((x$sales)/(x$employee))として

次のグラフを作成した。


今回は、タイトルと、棒グラフの色そして横軸に「年」を表記して、
見やすいグラフにしてみる。

> barplot((x$sales)/(x$employee),main="uriage/man",names.arg=c("51","54","57","60","63","3","6","9","11","14","16","19"),col=c("orange"))

ここで、main=""uriage"はグラフのタイトルを表記するので、重要!
name.arg=c("51","54"......)は、X軸の項目を示し、ここでは昭和、平成が混在しているが、
須坂市表記通りの「年」を示している。
colは棒グラフ色を指示している。
colorとすると、システム側に怒られるので注意が必要。
col=c("orange")としているが、もちろん他に色指定も可能なので、調べて欲しい。
また、ここではorange単色であるが、棒ごとに色を帰ることも可能であるが、
面倒なことは面倒です。

本日はここまでです。

----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年3月13日金曜日

つまずかないR言語入門(オープンデータから読み取れること)

長野県須坂市の商業データをなんとか取り込んだ。

> x<-read.table("08.csv",sep=",",header=TRUE,row.names=1)
と打ち込み、
> x
とすれば、


となる。
売上高と従業員数に注目すると、従業員の数は大きく変化していないが、
売上高が、昭和51年と、平成19年では2倍以上に拡大しているのが判る。
変数xの売上高(sales)と同じく変数xの従業員数(employee)を各年度で割ってみると
数字で示すことができる。

> (x$sales)/(x$employee)

すると、
[1] 879.7255   1184.1150   1481.9854   1946.4864   1928.9300   2494.5890   2199.9728
[8] 2566.8377   1985.2440   1798.8853   1895.1024   2174.6851

ということで、一人あたり売上高が大きく向上していることが数字で裏付けられた。
さらにこれを、グラフ化してみよう。

こういった年度毎の変化には、棒グラフが適切かと思う。
そこで、棒グラフを示すコマンド、barplotを使い、

> barplot((x$sakes)/(x$employee))
とすると、


と、右肩上がりに一人当たり売上高の遷移が確認できる。

グラフとしての見栄えは、とても人前に出せるものではないので、
その当たりの修飾方法は次回エントリーで示します。

追記)つまずかないR言語などと大見栄をはったものの、自分を含め
つまずきそうなところを、明記していなかったので、以前のエントリーで
補記として、陥りそうな落とし穴について、追記していこうと思ってます。

----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年3月11日水曜日

つまずかないR言語入門(オープンデータの活用)

前回のエントリーで、長野県須坂市の商業データを例として、
マーケティング利用を考えてみようとした。
ここで、一つ落とし穴がありました。
市の作成したエクセルデータの数値は、利用者の視認性を
考えて、3桁単位で","(カンマ)が入っているのです。

単純にCSVで落としても、カンマは生きているので、
R側で、sep=","として項目の区切りをカンマと明示
しても、データ中にカンマがあるので、正しく分析でき
ないことが判明。CSVファイルの数値を、3桁カンマ区切り
なしにして、読み込むことにした。
このあたりは、EXCELのバージョンだったり、Openofficeや
Libreofficeで、少し異なるようなので、深くは触れません。

前回同様、
>x<-read.table("08.csv",sep=",",header=TRUE,row.names=1)
として、
>x
で表示。
>plot(x)
として、各項目の相関関係を確認しましょう。

商店数(shoten)と売り場面積(area)に負の相関関係が見えるとか、
なぜか判りませんがその他の収入額(income)と商品手持ち額(zaiko)に正の相関関係が
見て取れるなど、その後の突っ込んだ分析の概要が読み取れると思います。
詳細な分析と、時系列の分析は次回以降で試行します。

----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年3月10日火曜日

つまずかないR言語入門(オープンデータファイルの読込)

前回までは、電卓的使い方と、Rに付属するデータの利用を理解してきた。

実務的には、外部ファイル(たとえばマイクロソフトの
officeやLINUX系ならLibreofficeか)の表計算ソフトや
CSVファイルを使うケースが圧倒的に多いと考えられる。
そこで、今日は自治体が公開しているオープンデータを
取り込んで、すこし加工したのり、分析してみる。

ここでは、長野県須坂市のオープンデータサイト から、
商業に関するデータを取り込んでみた。
ちなみに、同市のオープンデータはクリエイティブコモンズの


となっているので、2次利用させていただきます。

該当のアイコンをクリックすると、開くか保存するか
聞いてくるので、とりあえず開き、CSVファイル"08.csv"として
保存します。
保存先は以前説明した、Rの作業フォルダーにするのが
スムーズかと思います。
実は、ここで自分自身の漢字環境とカラムがnullの処理に 実力不足が露呈しまして、タイトルを英語表記、nullを0(ゼロ) と置き換えていることをご了解ください。

Rを開き

>x<-read.table("08.csv",sep=",",header=TRUE,row.names=1)

として >x と打ち込むと こんな画面が展開されるはずです。

ここからは、
これらをマーケティング的にどうみるか。
次回のエントリーで書きます。

(補遺) ファイルの読み込みには、数種類のパターンがあるが、
基本は、今回使った
>x<-read.table("file.name",header=TRUE,row.names=1)
となると思う。

読み込むデータは、多くはcsvかtxtと思われる。
read.csvは、read.tableを使って、項目の区切り(sepatator)をsep=",",
read.txtは同じくsep="\t"とすることで、同等の意味を持たすことができる。
txtのセパレータは、使っているOSやキーボードの違いで、表記がことなるので、 "\t"であったり\であったりするので、注意していただきたい。

ちなみに、今回の例題を使って見ると

>x<-read.csv("08.csv,header=TRUE,row.names=1)であったり、

>x<-read.txt("08.txt",header=TRUE,sep="\t",row,names=1)

と同等の機能をもつはずである。

----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年3月8日日曜日

つまずかないR言語入門(相関係数、単回帰分析)

改めて、回帰分析を考えてみると、例えば身長と体重のように
関係性があるような2つの変量があるとき、一方の数値が
与えられたとき、もう一方の数値を予測するようなケースが
考えられます。
前回の例でいえば、スピードをあげていた車が慌ててブレーキを
かけた時の停止距離と、ゆっくり走っていた車が同様にブレーキを
かけた場合の制動距離は、相関関係がありそうだというのは、
直感的に理解できます。
ちなみに、

>cor(cars)

とすると、speedとdistの相関係数は、0.8068949
となり、
目安として、1.0≧相関係数絶対値≧0.7
にあれば、高い相関関係があるといわれているので、想像通りの
結果とも言える。
マーケティング的にいえば、宣伝費と売上の関係(?)とか
商圏の人口と売上高などの例が挙げられます。
ここで、予測したい変数を目的変数、目的変数を説明する変数を
説明変数と呼びます。
自動車の例でいえば、制動距離が目的変数、スピードが説明変数
ということになりますかね。
この直線を使えば、測定できなかったスピードでも、およその
制動距離が推測できる。という利点があります。

とくに説明変数が一つのときは、単回帰分析と言い、前回の直線が
それを示しています。

ちなみに説明変数が2つ以上の場合を重回帰分析と言います。


----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年3月6日金曜日

つまずかないR言語入門(単回帰)

前回同様、「cars」を使う。

>cars
と入力して、carsのデータを入手する。

head(cars)とキーボードを叩けば

speeddist
142
2410
374
4722
5816
6910

となる。 繰り返しになるが、このデータはクラシックカーの時代の
自動車のスピードと停止距離を測定したもので、
その相関関係をみるために散布図を作るには、
> plot(dist~speed,cars)
と入力します。

これで、スピードが出ていると、制動距離も延びるのだということが 直感的に把握できます。 さらに
> abline(lm(dist~speed,data=cars))
とすることで、

となり、単回帰線を引くことができます。
----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年3月5日木曜日

つまずかないR言語入門(ヒストグラム)

さて、ヒストグラムだ。
外見上は、棒グラフに似ているが、同じではない。
分布を可視化したものと考えれば良いのかもしれない。
試みに、Rに付属しているデータに「cars」というのがあるので、
こいつでヒストグラムを作成してみる。

(ちなみにであるが、carsは1920年代の自動車のスピードと
その制動距離をデータ化したものだそうです。
原文:The data give the speed of cars and the distances taken to stop.
Note that the data were recorded in the 1920s. )

>hist(cars$dist)
と、キーボードから入力すると、横軸に停止までの距離、縦軸にその頻度が表示される。

顧客の購買金額や、年齢分布など、属性を把握するには有効な手法と思う。
----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年3月4日水曜日

つまずかないR言語入門(データの要約)

irisのファイルを要約してみたが、少し詳しく見てみたい。
列に、Sepal(がく片)と Petal(花びら)の長さと幅がそれぞれ表示され、
右端はirisの種類を示している。

行方向は、それぞれ最小値、第一四分位、中央値、平均値、第三四分位、最大値を
示している。
四分位とはデータを昇順に並べて、4等分したものです。
小さい値から数えて、総数の1/4番目に当たる値が第1四分位、 真ん中に当たる値が第2四分位(=中央値)、
3/4番目にあたる値が第3四分位となります。

マーケティングの世界でも、例えば、顧客属性(年齢層、居住地、性別など)
などをざっくり把握する場面で、このsummaryが使えると思う。

前々回紹介した、箱ひげ図を使えば、さらに視覚的に把握するのには便利かもしれない。


----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年3月2日月曜日

つまずかないR言語入門(ファイルを扱う)

データを毎回入力するケースは実務レベルでは少ないと考えられる。
一般的に、企業内でマーケティング用途にデータ分析しようとする場合、
蓄積されたexcelやBIツールから出力されたファイルを使うことが多いだろう。

とりあえず、今日は、ファイルの置き場所を気にせずにすむように、
あらかじめRに組み込まれている、"iris"というデータを使って、
ファイル操作に慣れよう。

>iris
と入力してリターンキーを叩くと、全150行のデータが画面に出力される。
あまりにデータが多いので、150行が一瞬の間に表示され全体像が見えない。
そこで、
>head(iris)
とすると、ヘッダータイトルを含んだ先頭6行、

Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies
15.13.51.40.2setosa
24.93.01.40.2setosa
34.73.21.30.2setosa
44.63.11.50.2setosa
55.03.61.40.2setosa
65.13.91.70.4setosa


>tail(iris) とすると最終行から前6行が画面に出力されるので、
Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies
1456.73.35.72.5virginica
1466.73.05.22.3virginica
1476.32.55.01.9virginica
1486.53.05.22.0virginica
1496.23.45.42.3virginica
1505.93.05.11.8virginica/td>

こんな感じで、データの全体像は俯瞰できる。
ちなみに、irisはあやめ属の3種についてのsepal(がく片)とpetal(花弁)の
長さと幅を、調べたものです。
詳しくはこちらを参照ください。

http://d.hatena.ne.jp/tsutatsutatsuta /20121206 /1354737461

5列150行のデータファイルがRに取り込まれた訳です。
> summary(iris)で、ファイルを要約すると、次のようになります。


----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年2月28日土曜日

つまずかないR言語入門(基本統計、箱ひげ図)

数値データで構成されたベクトルには、統計関数が使える。

マイクロソフトのEXCELでも、SUM(合計)などが使えるが、
ほぼ同じように

> x<-c(1,2,3,4,5)
として、xに代入された数値の合計を求めるには
> sum(x)
[1] 15
となる。

同様に、平均値(mean)を求めるには
> mean(x)
[1] 3

最大値を求めるには
> max(x)
[1] 5
最小値は
> min(x)
[1] 1

統計的な値をみるにはsummaryを使うと、全体像がよく判る。

> summary(x)

Min.1st Qu.MedianMean3rd Qu.Max.
123345

また、箱ひげ図を使うと、直感的に、全体が俯瞰できる。
例えばこんな感じ。

> boxplot(x)


例題としては簡単過ぎるが、コマンドの意味と、それがどんな作業をするかを理解してもらえれば
嬉しいです。
----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年2月26日木曜日

つまずかないR言語入門(代入とベクトルについて)

Rを電卓替りにつかう人はいるかもしれないが、一般には
統計処理に使うはずだ。

そこで、代入という考えが必要となる。
変数xに複数の数値(ベクトル)の1,2,3,4,5
を代入することを考えてみると、
> x<-c(1,2,3,4,5)

とすれば、xという箱に数字列1,2,3,4,5を代入できる。

xに何が代入されたかを確認しよう。

> x
[1] 1 2 3 4 5

ここで覚えておかなくてはならないのが、
<-

という不等号の
< 小なり、よりしょう、未満、レスザン(less than)
という不等号と、

- マイナス記号。

これを組み合わせることで、左辺に右辺の数字列他が
代入可能となる。

同様に
> y<-c(6,7,8,9,10)
> y
[1] 6 7 8 9 10

としても、xとyの演算は可能となり、
> x+y
[1] 7 9 11 13 15

> x*y
[1] 6 14 24 36 50

> y-x
[1] 5 5 5 5 5

こんな感じです。

さらに、xのベクトルが3より大きいかと
いう演算では、

> x>3
[1] FALSE FALSE FALSE TRUE TRUE

となり。後ろ2つの4,5が3より
大きいことが分かる。

----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年2月25日水曜日

つまずかないR言語入門(除算以降、べき乗や平方根について)

前回までで、いわゆる四則演算の例をしめした。

除算の場合、余りを求めたいことがある。

それには%%を使う。

> 7%%2
[1] 1

という風に使える。

べき乗は

^(アクサンシルコンフレックスと読むらしい)
を使う。

> 3^3 [1] 27

または**を使って
> 3**3
[1] 27
としても可能。

これで3*3*3=27
と同じ結果が得られる。

ルートはどうするか。

> 10^(1/2)
[1] 3.162278

もしくは、
> sqrt(10)
[1] 3.162278

と記述すれば平方根の計算が可能となる。
----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年2月24日火曜日

つまずかないR言語入門(インストールから電卓替わりに使用するまで)

さて、Windows版をダウンロードすると、インストール する場所を聞いてくる。

一般的には、c:ドライブのsystemフォルダー にRというフォルダーを作ってくれて、そこに インストールすると同時に、解凍を始める。

ここで問題になるのが、作業フォルダー。

Rで、使用したファイルなどを複数回使う ことがあり、それらを保管しておく場所を 作業フォルダーと呼ぶ。

この作業フォルダーをどこにおくかは あとの作業性にも影響するので、決めて おく必要がある。

ただし、この場所は、Windowsであれば、 Rのショートカットを右クリックし、プロパティ をみることで、確認可能だし、場合によっては プロパティを直接操作して、書き直すことも 可能なので、あまり心配しなくても良いかも しれない。

ちなみに、LINUX系(UNIX系)の場合は、 cdなどのコマンドをたたくことで、変更する ことは可能となる。

さて、Rの機能を知るうえで、電卓の 替わりになることを知っておくのも無駄 にはならない。 具体的には
>
のプロンプトがでるので、

通常使う四則演算は記録を残しながら、容易に実現できます。

加算
> 1+2
[1] 3

減算
> 4-1
[1] 3

乗算
> 1*3
[1] 3

除算
> 4/2
[1] 2

という感じです。

演算の順序も
> 1+2*3
[1] 7

> (1+2)*3
[1] 9

と、算数の公式通りに記述すれば良いようです。 計算を終了するときは

> q()
と入力すると、 別のWindowに 作業スペースを保存しますか? と聞いてくるので、とりあえず、いいえ(N)を 押して終了しましょう。


----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------

2015年2月23日月曜日

つまずかないR言語入門

R言語が注目を浴びている。 SPSS(IBM)やSASと同等な統計処理能力があるが、これら商用ソフトとことなり、 フリーソフトであることと、CUIが基本であるため、とつきにくいという点が 良く言われる。
そのため、その使用方法を解説する講座が、法外な(個人的な見解ですが)料金で 開催されていることがある。
いっそのこと、自分の備忘録を兼ねて、Rの入門から、ビジネスで必要と思われる 統計手法まで、ポツポツと書いていこうかと思い立った次第。

個人的背景でいえば、大学は理工系で、統計解析は当然授業で習った。 会社に入ってからは、マーケティングを主たる業務として、ダイレクトメール のレスポンス解析の必要性から、多次元分析に足を踏み入れ、その後「R」の 存在をしり、会社ではWindowsXPからWindows7に移行というか移植を敢行。

家庭では、UBUNTU上でのRとWindowsでのRを実践中。

このブログでは、メインと思われるWindows7上での「R」言語について、 説明したいと思う。

お約束通り、ソフトウェアのダウンロードから。

Rは、開発プロジェクトの本家であるThe R Project for Staticstical computingのサイトに多くの情報が集まっているが、ダウンロードに関してはCRAN(The Comprehensive R Archive Networkの略)のなかにミラーサイトが詳細に 記されているので、その中のJAPANの筑波大学あたり を利用するのが、インターネット資源の浪費をしないためにはいいのではないでしょうか。

上記にリンクすると

Download R for Linux
Download R for (Mac) OS X
Download R for Windows

とそれぞれ自分の環境に合わせた一覧がでるので、そいつをクリック。

ブログ執筆時点ではWindows版は R-3.1.2 for Windows (32/64 bit)が最新版となっており、

容量は54MBとのことなので、説明の順番が逆になってしまったが、 自分のPCのハードディスクの容量を確かめておく必要があります。

つぎは、ダウンロードからインストールまで説明します。


----------------------
スマートテクノロジーネットワークのホームページはこちら
----------------------