金子邦彦研究室プログラミングR のプログラム例CSV ファイルの読み込み,散布図と近似線,スケールの信頼性(R システムを利用)

CSV ファイルの読み込み,散布図と近似線,スケールの信頼性(R システムを利用)

このページでは,R システムを用いた散布図について, 散布図内での平均と分散の図示散布図行列スケールの信頼性 の作成手順を図解で説明する

前準備

R システムのインストール

R システムの CRAN の URL: https://cran.r-project.org/

CSVファイルを読み込み,データフレームに格納

  1. (前準備) 使用する CSV ファイルの作成

    Book1.csv をダウンロード (参考: 「外国為替データ(時系列データ)の情報源の紹介」の Web ページ

    以下の説明では、

    として説明を続ける.

    自前の CSV ファイルを使うときの注意: read.table() 関数を使うので, 属性名は英語になっていること.属性名は,CSV ファイルの第一行目に書いていること.

  2. 使用する CSV ファイルの確認

    属性名が CSV ファイルの1行目に書かれていることを確認する.

    Book1.csv
  3. R の起動
  4. read.table」を用いて,CSV ファイルを R のデータフレームに読み込み

    次のコマンドを実行.

    Windows での動作手順例

    X <- read.table("C:/R/Book1.csv", header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE);
    

    ◆ Linux での動作手順例

    X <- read.table("/tmp/Book1.csv", header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE);
    

    R の read.table のオプション

    • X <- ・・・ 変数 X に読み込むという意味
    • C:/R/Book1.csv, "/tmp/Book1.csv" ・・・ 読み込む CSV ファイル名Windows では区切りには「/」を使うことに注意.
    • header="TRUE" または header="FALSE" ・・・ 列ラベルが設定されているか
    • seq="," や seq="\" や seq=" " や ・・・ 列を区切る記号(CSV ファイルのときは「seq=","」)
    • na.string="NA" ・・・ Not a Number には "NA" を使うという意味
    • dec="."  ・・・ ファイルで使われている小数点記号(既定値は,ピリオド)
    • strip.white=TRUE ・・・ 個々のデータの先頭や末尾にある「空白文字」を取り除いて読み込む
    • skip=<行数> ・・・ 読み飛ばし行数
    • nrow=<行数> ・・・ 読み込み行数
    • (その他のオプション) dec: ファイルで使われている小数点記号を指定できる
  5. オブジェクト X の確認

    次のコマンドを実行.

    edit(X);
    

    次のコマンドを実行.

    str(X)
    

要約統計量

  1. 要約統計量(summary を使用)

    最小値,中央値,平均値,最大値などを表示

    summary(X)
    

    [image]
  2. 要約統計量(numSummary を使用)

    平均値,標準偏差などを表示

    numSummary( X[,c("USD", "EUR", "AUD")], statistics=c("mean", "sd", "quantiles"), quantiles=c( 0,.25,.5,.75,1 ))
    

    [image]

散布図と近似線

  1. scatterplot」を用いた散布図の描画

    要点: 横軸が seq, 縦軸が USD

    scatterplot( USD~seq, reg.line=lm, smooth=TRUE, boxplots=FALSE, span=0.5, data=X )
    

    [image]
  2. library(ggplot2)
    p <- ggplot(X) 
    p + geom_point( aes(x = seq, y = USD), shape=1) + stat_smooth( aes(x = seq, y = USD) ) 
    

    [image]

    [image]
  3. scatterplot」を用いた散布図の描画(分布の平均と分散も図示)

    要点: 横軸が seq, 縦軸が USD.分布の平均と分散も図示

    scatterplot( USD~seq, reg.line=lm, smooth=TRUE, boxplots='xy', span=0.5, data=X )
    

    [image]
  4. 散布図行列

    scatterplot.matrix( ~seq+USD+EUR+AUD, reg.line=lm, smooth=TRUE, span=0.5, diagonal = 'density', data=X )
    

    [image]

スケールの信頼性

reliability( cov(X[,c("USD","EUR","AUD")], use="complete.obs") )

[image]

CSVファイルを読み込み,データフレームに格納

  1. (前準備) 使用する CSV ファイルの作成

    ※ ここでは Book1.csv をダウンロードし,分かりやすいディレクトリに置く

    (参考: 「外国為替データ(時系列データ)の情報源の紹介」の Web ページ

    以下の説明では、

    として説明を続ける.

    自前の CSV ファイルを使うときの注意: read.table() 関数を使うので, 属性名は英語になっていること.属性名は,CSV ファイルの第一行目に書いていること.

  2. 使用する CSV ファイルの確認

    属性名が CSV ファイルの1行目に書かれていることを確認する.

    Book1.csv
  3. R の起動
  4. read.table」を用いて,CSV ファイルを R のデータフレームに読み込み

    次のコマンドを実行.

    Windows での動作手順例

    X <- read.table("C:/R/Book1.csv", header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE);
    

    Linux での動作手順例

    X <- read.table("/tmp/Book1.csv", header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE);
    

    オプション

  5. オブジェクト X の確認

    次のコマンドを実行.

    edit(X);
    

    次のコマンドを実行.

    str(X)
    

データフレームからのグラフ作成例

  1. x, y 値を指定しての散布図の作成

    x 値を格納したベクトル,y 値を格納したベクトルを引数として plot() 関数を使うと,散布図が描かれます.

    この場合「X[,c("属性名")]」のような書き方で,X から列を抜き出して,ベクトルを作る.

    ■ Iris データセットの散布図の例

    plot( iris[,1], iris[,2], col=iris[,5] )
    

    [image] 

    library(ggplot2)
    p <- ggplot(iris) 
    p + geom_point( aes(x = iris[,1], y = iris[,2], colour = iris[,5]) ) + scale_colour_hue()
    

    [image] 

    外国為替データ(時系列データ) Book1.csv の散布図の例

    plot( X[,c("seq")], X[,c("USD")] )
    

    [image]

    [image]

    library(ggplot2)
    p <- ggplot(X) 
    p + geom_point( aes(x = seq, y = USD) )
    

    [image] 

    [image] 

    plot( X[,c("USD")], X[,c("EUR")] )
    

    [image]

    [image]

    library(ggplot2)
    p <- ggplot(X) 
    p + geom_point( aes(x = USD, y = EUR) )
    

    [image] 

    [image] 

重ね書きの例

points() 関数や line() 関数 や legend() 関数や text() 関数を使って,簡単に重ね書きできる.例を示しておきます. 次のような感じになります(文法の詳細には立ち入りません).

※ 平滑化の関数は,他にも,smooth.spline(), ksmooth(), supsmu() などが知られている.

線の重ね書き

lines() 関数は,線を重ね書きするもの.

外国為替データ(時系列データ) Book1.csv の例

plot( X[,c("seq")], X[,c("USD")] )
lines(lowess( X[,c("seq")], X[,c("USD")] ), col = "red")
lines(lowess( X[,c("seq")], X[,c("USD")], f=0.2 ), col = "green")

[image]

[image]

メソッドについての説明は,次の公式ページにある. https://rdocumentation.org/packages/ggplot2/versions/3.3.5

library(ggplot2)
p <- ggplot(X) 
p + geom_point( aes(x = seq, y = USD) ) + stat_smooth( aes(x = seq, y = USD), method="loess" )

[image]

[image]

library(ggplot2)
p <- ggplot(X) 
p + geom_point( aes(x = seq, y = USD) ) + stat_smooth( aes(x = seq, y = USD), method="loess" )

複数のグラフの重ね描き

par(new=T)」によりグラフの重ね書きを指示

外国為替データ(時系列データ) Book1.csv の例

plot( X[,c("seq")], X[,c("USD")] )
par(new = T)
plot( X[,c("seq")], X[,c("EUR")], pch=0, col=2 )

[image]

[image]

library(ggplot2)
p <- ggplot(X) 
p <- p + geom_point( aes(x = seq, y = USD), shape=0 ) 
p <- p + geom_point( aes(x = seq, y = EUR), shape=1, colour="red" ) 

p

[image]

[image]

凡例の重ね書き

legend() 関数では,次を指定する.

関連する外部ページ】: http://www.okada.jp.org/RWiki/?%A5%B0%A5%E9%A5%D5%A5%A3%A5%C3%A5%AF%A5%B9%BB%B2%B9%CD%BC%C2%CE%E3%BD%B8%A1%A7%CB%DE%CE%E3 (現存しない)

グラフィックス参考実例集:凡例 (http://www.okada.jp.org/RWiki/?%A5%B0%A5%E9%A5%D5%A5%A3%A5%C3%A5%AF%A5%B9%BB%B2%B9%CD%BC%C2%CE%E3%BD%B8%A1%A7%CB%DE%CE%E3)

plot( X[,c("seq")], X[,c("USD")] )
lines(lowess( X[,c("seq")], X[,c("USD")] ), col = "red")
lines(lowess( X[,c("seq")], X[,c("USD")], f=0.2 ), col = "green")
legend( 5, 105, c( "f = 2/3", "f = 0.2" ), lty = 1, col = c("red", "green") )

[image]

[image]

テキストを書くこともできる.

text(locator(1), labels = "ほげほげ")

グラフのファイルへの保存

グラフィカル・デバイスの種類

など.

詳細は「help(Devices)」で確認できる

グラフィカル・デバイスを用いたグラフのファイルの保存

例えば,PNG ファイルを作りたいときは,最初に「png()」を実行.最後に「dev.off()」で,ファイルを閉じる. すると,作業ディレクトリにファイルができる.作業ディレクトリは,getwd() で分かる.

※ png( file="C:\1.png" ) のように,ファイル名を陽に指定する方が分かりやすいでしょう.

Windows での実行手順例 (png ファイルを作成している)

X <- read.table("C:/R/Book1.csv", header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE);
png("1.png")
plot( X[,c("seq")], X[,c("USD")] )
dev.off() 
getwd()

X <- read.table("C:/R/Book1.csv", header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE);
png("1.png")
library(ggplot2)
p <- ggplot(X) 
p + geom_point( aes(x = seq, y = USD) )
dev.off() 
getwd()

Ubuntu での実行手順例 (png ファイルを作成している)

X <- read.table("/tmp/Book1.csv", header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE);
png("1.png")
plot( X[,c("seq")], X[,c("USD")] )
dev.off() 
getwd()

[image]

X <- read.table("/tmp/Book1.csv", header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE);
png("1.png")
library(ggplot2)
p <- ggplot(X) 
p + geom_point( aes(x = seq, y = USD) )
dev.off() 
getwd()

R コマンダーを用いた散布図の作成手順例

グラフの作成には R コマンダーが便利です

  1. R の起動
  2. Rcmdr, RcmdrPlugin.KMggplot2 の読み込み
    library(Rcmdr)
    library(RcmdrPlugin.KMggplot2)
    
    ※ このときエラーが出た場合には, 「install.packages("Rcmdr")」, 「install.packages("RcmdrPlugin.KMggplot2")」, のように インストール操作を行うと解決する場合がある
  3. しばらく待つと、Rコマンダーのウィンドウが開く

    [image]
  4. Rコマンダーで「データ」 → 「データのインポート」と操作する → 「テキストファイルまたはクリップボード,URLから」と操作する

    [image]
  5. データ名、ヘッダーの有無、区切り記号を指定

    [image]
  6. 読み込みたいファイルのディレクトリとファイル名を指定

    [image]
  7. いま読み込んだファイルのデータ名を選択

    [image]
  8. データセットを表示したい場合には、「データセットを表示」をクリックする

    [image]

    [image]
  9. ggplot() 関数を用いた散布図を作成したい場合は、 「KMggplot2」→「散布図」と操作する

    [image]

    x軸, y軸などの設定を行い 「OK」をクリックすると、散布図が得られる.

    [image]

    [image]
  10. plot() 関数を用いた散布図を作成したい場合は、 「グラフ」→「散布図」と操作する

    [image]

    x軸, y軸などの設定を行い 「OK」をクリックすると、散布図が得られる.

    [image]

    [image]
  11. R のプログラムが作成される.これを記録しておけば、将来、同じ操作を繰り返したくなった時に楽。

    [image]