2014年1月2日木曜日

Rで条件分岐とループ

条件分岐

> x <- 1
> if(x == 1){
+   print("xは1")
+ }else{
+   print("xは1ではない")
+ }
[1] "xは1"

条件分岐はelse if を続ければ3つ以上続けれる

> x <- 1
> if(x < 0){
+   "xは0より小さい"
+ }else if(x == 0){
+   "xは0です"
+ }else{
+   "xは0より大きい"
+ }
[1] "xは0より大きい"
>

ループ
> x <- c("A", "B", "C")
> for(i in 1:length(x)){
+   print(x[i])
+ }
[1] "A"
[1] "B"
[1] "C"
>
i in 1:length(x)でxのオブジェクトの要素分繰り返しを行う。


Rでライングラフ

Rでライングラフの作り方。

> barplot(VADeaths, beside = TRUE, #バーグラフの作成
+         legend = rownames(VADeaths))#凡例の付加
> title(main = "Death Rates in Virginia", font.main = 4, cex =1)
> matplot(VADeaths, type = "l") #type = "l"はLine のl
> legend.xy <- locator(1)#マウスを使って座標を得る


Rでバーグラフ

Rを使ったバーグラフの作り方。

> VADeaths
      Rural Male Rural Female Urban Male Urban Female
50-54       11.7          8.7       15.4          8.4
55-59       18.1         11.7       24.3         13.6
60-64       26.9         20.3       37.0         19.3
65-69       41.0         30.9       54.6         35.1
70-74       66.0         54.3       71.1         50.0
> barplot(VADeaths, beside = TRUE, #バーグラフの作成
+         legend = rownames(VADeaths))#凡例の付加
> title(main = "Death Rates in Virginia", font.main = 4, cex =1)
>

font.mainでは、1はプレーンテキスト、2はボールド、3はイタリック、4はボールドイタリック。


Rを使ったχ自乗検定

χ自乗検定には、観測された頻度分布が理論分布と同じかどうかを検定する適合性検定と2つの変数に対する2つの観察(2x2分割表で表される)が互いに独立かどうかを検定する独立性検定の2種類がある。

χ自乗検定の手順は、
  1. データについて仮説を立てる(帰無仮説)。
  2. クロス表の頻度と理論的な頻度の差であるχ自乗値を求める。
χ自乗値は、



Rでχ自乗値の確率を求めるには、pchisq()関数の第1引数にχ自乗値を、第2引数dfに自由度を指定して実行する。pchisq()は、そのχ自乗値より小さな値が得られる確率を出力する。
2x2分割表を使った独立性検定の場合、expectedの期待度数を観測度数から求める作業が少し面倒な気もする。このサイトの例題がわかりやすかった。
pchisq()でχ自乗値の確率を出したら、その確率を1から引くことで、指定されたχ自乗値以上の値が得られる確率が求められる。

    3. χ自乗値とデータの自由度から確率を求める。
  4. 求まった確率があらかじめ定めた確率未満であれば、帰無仮説を捨てる。

独立性検定の場合、帰無仮説が棄却されれば、クロス表の項目、例えば、性別とアンケートの回答に関連があり、男女の回答には有意に異なるといった判断ができる。
Rで直接、χ自乗検定を行うなら、chisq.test()を使えばいい。
デフォルトでイェーツの補正が行われており、クロス表の頻度の整数を補正しχ二乗分布への近似を改善してくれる。

> x <- matrix(c(229, 98, 286, 58), ncol = 2)
> x
     [,1] [,2]
[1,]  229  286
[2,]   98   58
> chisq.test(x)

 Pearson's Chi-squared test with Yates' continuity correction

data:  x 
X-squared = 15.4185, df = 1, p-value = 8.614e-05

>

自由度1、確率p=0.05ならχ自乗値は3.84(分布表はここで)
3.84<15.4185となり、帰無仮説は棄却される。
p-valueの結果からも、このクロス表が偶然えられる可能性はほとんどなく、明らかなデータ間の差が認められる。

Rを使ったt検定

今回のは、t検定をふりかえる。Rの場合、t.test()で一発だ。

> X <- c(90,80,80,90,70,60,60,70,80)
> Y <- c(60,70,80,50,40,50,60,70,50)
> t.test(X,Y)

 Welch Two Sample t-test

data:  X and Y 
t = 2.9417, df = 15.79, p-value = 0.009678
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
  4.643171 28.690163 
sample estimates:
mean of x mean of y 
 75.55556  58.88889 

>

Xの平均は、75.55556。Yの平均は、58.88889。t検定では、この二つの値の差は偶然生じたものであると仮定して、その仮説を帰無仮説とする。
帰無仮説が棄却できるかどうかは、p-valueを見て、その値が0.05未満の場合、二つの平均値には偶然ではない差があると判断する(一番下にリンクを置いた「Rによるテキストマイニング入門」では、二つのクラスに学力テストをおこなった場合という話で紹介されている)。
また、t.test(X,Y, paired = TRUE)を使えば、データに相関を考慮したt検定ができる。

t検定は、正規分布に従う連続値のデータに適用されるということを忘れずに。
上の例の場合は、独立2郡の平均値の差の検定。
t検定は、




  • 二つの母集団がいずれも正規分布に従うと仮定した上での、平均が等しいかどうかの検定。
    • 標本が対になっている、つまり1組の標本のメンバー各々と、もう1組の特定のメンバーとの間に特別な関係がある場合(例えば、同じ人に前後2回調査する場合、夫と妻とで比較する場合など)。
    • 標本が独立で、比較する二つの群の分散が等しいと仮定できる場合(等分散性の仮定)。
    • 標本が独立で、等分散性が仮定できない(異分散)場合。これは正確にはウェルチのt検定と呼ばれる。
  • 正規分布に従う母集団の平均が、特定の値に等しいかどうかの検定。
  • 回帰直線の勾配が0と有意に異なるかどうかの検定。

  • に大別できる。

    数式でちゃんと求めるなら、wikipediaが十分わかりやすい。

    Rを使った基本的な統計分析

    簡単にRを使った基本的な統計分析もふりかえる。

    適当にxとyのデータを作った。
    range(), diff(), var(), sd(), summary(), barplot(), par(), hist()を使用。
    最後は、箱ひげ図とヒストグラムを載せておく。

    > x <- c(10,10,20,15,25,29,40,50,42,56,32,64,34,32)
    > length(x)
    [1] 14
    > mean(x)
    [1] 32.78571
    > 
    > y <- c(32,23,34,45,67,32,13,67,85,32,64,32,15,24)
    > length(y)
    [1] 14
    > mean(y)
    [1] 40.35714
    > 
    > range(x)#最大値と最小値
    [1] 10 64
    > diff(range(x))#最大値と最長値の幅
    [1] 54
    > range(y)
    [1] 13 85
    > diff(range(y))
    [1] 72
    > 
    > var(x); sd(x)#分散と標準偏差
    [1] 272.489
    [1] 16.50724
    > var(y); sd(y)
    [1] 482.5549
    [1] 21.96713
    > 
    > summary(x)#quantileも求めたいならこの関数
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      10.00   21.25   32.00   32.79   41.50   64.00 
    > summary(y)
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      13.00   26.00   32.00   40.36   59.25   85.00 
    > 
    > boxplot(x,y)#箱ひげ図
    

    > hist(y, breaks = 10:90)
    > par(mfrow = c(1,2)) #histgramを二つ並べるように
    > hist(x, breaks = 10:80)#breaksでは軸の幅を。
    > hist(y, breaks = 10:90)
    
    

    2013年12月31日火曜日

    財務3表の理解

    RやPythonの勉強用と書いておきながら、早速、例外なのだが、「決算書がスラスラわかる財務3表一体理解法」という新書が良書だったので、一番覚えておいた方が良さそうなところをここにもまとめておこうと思う。

    財務3表の5つのつながり

    
    
    思ったよりも汚い図になってしまった(笑)PPTで書いたほうがよかっただろうか。
    まあ、自分で見るだけなら十分かな。ブログって難しい。
    
     
    とりえあえず、本に書かれていた財務3表の見る手順は、
    1. それぞれの取引がPLに影響を与えているかどうかを見る。PLに影響を与える取引だとPLの数字(特に利益)が変化するが、取引によっては、PLが全く動かない
    2. PLの「当期純利益」がBSの「繰越利益余剰金」とつながっていることを確認
    3. BSの左側と右側は常に一致。左右がバランスしていることを確認
    4. 直接法のCSで実際の現金の動きを確認
    5. 直接法CSの一番下にある「現金及び現金同等物の期末残高」が、BSの「現金及び預金」と一致していることを確認
    6. 間接法のCSで、一番上の数字はPLの「税引前当期純利益」と一致しているか確認
    7. 最後は、間接法CSと直接法CSの営業活動によるCF計が一致しているか確認
    この手順を知るだけでも随分、お金がどのように流れてるのか3表のつながりがどのようになっているのかがわかるような気がする。
    本では、実際に会社を起業した場合のお金の動きを見ていくので例がわかりやすい。
    

    主な財務分析指標と評価の目安
    この財務分析指標を使って自分が勤めてる会社の状況でも見てみようかなと思う。
    ブログに出せるかはわからないけど(笑)


    CSのパターンで会社の状況が推測できる
     
    1. 営業
    2. 投資
    3. 財務
    の順番でキャッシュフローが+-かで会社の状況を推測する。

    ①+、+、+
    営業活動で現金を生み出した上に借入などで現金を増やしている。さらに、固定資産や有価証券なども売却している。将来の大きな投資のためにお金を集めているのだろうか。

    ②+、+、-
    営業活動と、固定資産や有価証券などの売却により現金を生み出し、借入の返済を積極的に行っている。財務体質強化の段階にある会社だろう。

    ③+、-、+
    営業活動で現金を生み出した上に借入などで現金を増やし、積極的に投資活動を行っている。将来の先約も明確な優良企業のパターン。

    ④+、-、-
    営業活動で生み出した現金を投資活動や借入金の返済に充てている。潤沢な営業CFがある会社であろう。

    ⑤-、+、+
    営業CFのマイナス分を借入と固定資産や有価証券の売却で賄っている。問題会社の一般的なパターン。

    ⑥-、+、-
    営業CFのマイナス分と借入返済分を固定資産や有価証券の売却で賄っている。過去の蓄積を切り売りして事業を継続している。

    ⑦-、-、+
    営業活動で現金を生み出せていないが、将来のために設備投資を行っている。営業のマイナス分と設備投資資金をすべて借入や新株発行で賄っている会社。よほど自信がある将来計画があるのだろう。

    ⑧-、-、-
    営業活動で現金を生み出せていないのに、将来のための設備投資を行い、借入の返済も行っている。過去に多くの現金蓄積があった会社であろう。

    この考え方わかりやすくて便利そう。
    まとめ方としては、かなり雑なので、著者の方に申し訳ないけど、かなり良書だと思う。最終章では、新会計基準も紹介されているので、実際の決算書を見るときの専門用語についての理解もしっかり押さえてくれている印象。

    それにしても、年末に実家に帰ってきたのだが、居場所がない上に集中して本を読めない(笑)