広告 散布図

Rによる散布図の描き方

2023年11月3日

はじめに

散布図は、統計学において二つの連続変数間の関係を視覚的に表現する基本的なグラフの一つです。散布図を描くことによって、データポイントがどのように分布しているか、そして変数間に明確な関係があるかどうかを素早く理解することができます。

R言語では、plot 関数を使って簡単に散布図を作成できます。この関数は、基本的なプロットから始めて、さまざまなオプションを使ってカスタマイズすることができます。Rを用いて散布図を描く具体的な方法について、初心者でも簡単にフォローできるように順を追って説明していきます。

使用するデータの準備

今回は次の様な、身長(height)と体重(weight)のデータが入力されたe、csvファイル(ファイル名はscore.csv)を使用して散布図を描いていきたいと思います。

スクリプトの入力

#はじめにデータの読み込みを行います。
df <- read.csv("D:/ブログ用/17R/R/R#5 プロット/plot/score.csv")
#[D:/ブログ用/17R/R/R#5 プロット/plot/score.csv]まではご自身の環境に合わせて変更してください


#サンプルデータをそれぞれ抽出します。
x <- df$weight
y <- df$height


plot(df$weight, df$height, 
     main="散布図の例",  # タイトル
     xlab="体重",  # X軸のラベル
     ylab="身長",  # Y軸のラベル
     pch=1,  # ポイントのタイプ(pch=1は円)
     cex=2, #ポイントのサイズ
     lwd=2, #ポイントの境界線の太さ
     col=rgb(0,0,1,0.5))  # ポイントの色(ここでは半透明の青)

スクリプトを実行すると次のようなグラフが出来上がります。

マーカーの設定(pch)の一覧

画像だけでは説明しきれないので注釈をつけます。

  • pch = 0: 四角形
  • pch = 1: 円
  • pch = 2: 三角形(点が上)
  • pch = 3: プラス記号
  • pch = 4: クロス(×)
  • pch = 5: ダイヤモンド
  • pch = 6: 三角形(点が下)
  • pch = 7: 四角形内に十字
  • pch = 8: 星型
  • pch = 9: 円の中に丸
  • pch = 10: プラスの中に丸
  • pch = 11: 円の中に四角
  • pch = 12: 四角形の中に四角形
  • pch = 13: 円の中に三角(点が上)
  • pch = 14: 円の中に三角(点が下)
  • pch = 15: 四角形(塗りつぶしなし)
  • pch = 16: 円(塗りつぶしなし)
  • pch = 17: 三角形(点が上、塗りつぶしなし)
  • pch = 18: 三角形(点が下、塗りつぶしなし)
  • pch = 19: 固定幅の塗りつぶされた円
  • pch = 20: 固定幅の塗りつぶされた円(より小さい)
  • pch = 21: 囲まれた円(塗りつぶし可能)
  • pch = 22: 囲まれた四角形(塗りつぶし可能)
  • pch = 23: 囲まれた三角形(点が上、塗りつぶし可能)
  • pch = 24: 囲まれた三角形(点が下、塗りつぶし可能)
  • pch = 25: 囲まれたダイヤモンド(塗りつぶし可能)

pch = 21 から pch = 25 までの値は、bg パラメータを使用して背景色を指定できる点が特徴です。それぞれの形状についてのより詳細な情報は、Rのヘルプページを参照してください(コンソールで ?points または ?par と入力)。

rgb関数

Rにおいて、rgb 関数は色を指定するために使用されます。この関数は赤(Red)、緑(Green)、青(Blue)の3つのカラーチャンネルを組み合わせて、指定した色を作り出します。オプションとして透明度(Alpha)も指定することができます。

rgb 関数の基本的な使い方は以下の通りです

rgb(red, green, blue, alpha, names = NULL, maxColorValue = 1)

こで各パラメータは以下のようになります

  • red, green, blue: これらの値は色の強度をそれぞれ指定し、0からmaxColorValueまでの数値で設定します。maxColorValueのデフォルトは1で、これは色の強度が0(なし)から1(完全な強度)までであることを意味します。しかし、maxColorValueを255として設定することも一般的で、この場合は0から255までの整数を使用して色の強度を指定します。
  • alpha: これは透明度を指定します。値は0(完全に透明)からmaxColorValue(完全に不透明)までで設定します。このパラメータは省略可能ですが、透明度を指定したい場合に有用です。
  • names: オプションで、生成された色に名前を付けることができます。
  • maxColorValue: 色の強度と透明度を指定するための最大値を設定します。デフォルトは1ですが、255に設定することもよく行われます。

例えば、半透明の青色を作りたい場合、以下のように指定することができます(0から1の間で色の強度を指定)

semi_transparent_blue <- rgb(0, 0, 1, 0.5)  # 青色の強度が最大で、透明度は50%

もし0から255の値を使いたい場合は、以下のようにmaxColorValueを設定します

semi_transparent_blue <- rgb(0, 0, 255, 128, maxColorValue = 255) 
 # 同じ色ですが、値の範囲が0から255

rgb 関数で作成された色は、plotcol などの関数で色を指定するパラメータとして使用することができます。

その他の項目の設定コマンド

Rの plot 関数で軸ラベル、メインタイトル、サブタイトルのフォントサイズを変更するには、以下のパラメータを適当な場所(plot()のカッコ内に追加)に入力すると変更できます。

  • cex.axis: 軸ラベルのフォントサイズを変更します。
  • cex.lab: 軸のタイトルのフォントサイズを変更します。
  • cex.main: メインタイトルのフォントサイズを変更します。
  • cex.sub: サブタイトルのフォントサイズを変更します。

これらのパラメータは、基準となるテキストサイズの倍率を指定します。デフォルト値は 1.0 ですが、これを大きくすることでフォントサイズを大きくできます。

回帰直線の作成

回帰直線を追加するコマンドは次の通りです。

# 回帰直線を追加
abline(lm(y ~ x), col="red")  
# lm()は線形モデルを計算し、ablineはそのモデルに基づいた直線を描きます

すると次のように回帰直線が描かれます。

回帰式の表示

回帰式を表示させるスクリプトは以下のとおりです。

model <- lm(y ~ x)
intercept <- coef(model)[1] #y軸切片を抽出
slope <- coef(model)[2] #傾きを抽出

# 回帰式のテキストを作成
eqn <- paste("y = ", round(intercept, 2), " + ", round(slope, 2), "x", sep = "")

# グラフにテキストとして回帰式を追加
text(x = mean(x), y = max(y), labels = eqn, pos = 4)

R言語において、sep は "separator" の略であり、特定の関数内で文字列を結合する際に使用される区切り文字を指定するための引数です。

  • x = mean(x): テキストを配置するX軸の位置を指定しています。ここでは x の値の平均をX軸の位置として使用しています。つまり、プロットされたデータのX軸に沿った中心点にテキストを配置したいという意図があります。

  • y = max(y): テキストを配置するY軸の位置を指定しています。こちらは y の値の最大値をY軸の位置として使用しており、データの中で最も高いポイントの高さにテキストを配置することを意味しています。

  • labels = eqn: 表示するテキストの内容を指定しています。eqn は通常、文字列や数式を含む変数で、このコマンドの前の部分で定義されていることが期待されます。たとえば、線形回帰分析から導き出された方程式を eqn という変数に保存し、それをグラフ上に表示させることが一般的です。

  • pos = 4: テキストの位置を具体的に指定しています。pos は、テキストを指定した座標点に対してどの位置に配置するかを決定する引数です。値の 4 はテキストを指定した座標の右側に配置することを意味します。

スクリプトを実行すると以下のようにグラフに回帰式が記載されるようになりました。

R言語における pos 引数は、テキストをプロット上の特定の位置に配置する際に使われます。この引数は text 関数や mtext 関数などで見られ、テキストがプロット上のどの位置に表示されるかを決定します。

text 関数の場合、pos 引数には以下の数値を指定することができます:

  • 1: 下
  • 2: 左
  • 3: 上
  • 4: 右

決定係数R2乗値の表示

決定係数Rをグラフに表示させるスクリプトは以下のとおりです。

# モデルの要約から情報を取得
summary_model <- summary(model)
r_squared <- summary_model$r.squared # R^2

# R^2のテキストを作成
r_squared_text <- paste("R^2 =", round(r_squared, digits = 2))
# グラフにテキストとしてR^2を追加
text(x = mean(x), y = max(y) - diff(range(y))/20, labels = r_squared_text, pos = 4, cex = 1)

このスクリプトでは、lm 関数を用いて線形モデルをフィットさせ、summary 関数でモデルの要約を取得し、そこから 値を取得しています。

text 関数はテキストをグラフに追加するために使用されており、pos = 4 はテキストを指定した座標の右側に配置します。cex = 1 はテキストのサイズを指定するためのものです。

text 関数を2回呼び出しているのは、回帰式と 値を異なる行に表示するためです。2つ目の text 関数では y 座標から diff(range(y))/20 を引いているので、最初のテキストより少し下に表示されます。これにより、テキストが重ならずにきれいに表示されます。

スクリプトを実行すると以下のように表示されるようになります。

スクリプトまとめ

#はじめにデータの読み込みを行います。
df <- read.csv("D:/ブログ用/17R/R/R#5 プロット/plot/score.csv")

#サンプルデータをそれぞれ抽出します。
x <- df$weight
y <- df$height


plot(df$weight, df$height, 
     main="散布図の例",  # タイトル
     xlab="身長",  # X軸のラベル
     ylab="体重",  # Y軸のラベル
     pch=1,  # ポイントのタイプ(pch=19は円)
     cex=2,
     lwd=2,
     col=rgb(0,0,1,0.5))  # ポイントの色(ここでは半透明の青)

# 回帰直線を追加
abline(lm(y ~ x), col="red")  # lm()は線形モデルを計算し、ablineはそのモデルに基づいた直線を描きます


model <- lm(y ~ x)
intercept <- coef(model)[1] #y軸切片を抽出
slope <- coef(model)[2] #傾きを抽出


# 回帰式のテキストを作成
eqn <- paste("y = ", round(intercept, 2), " + ", round(slope, 2), "x", sep = "")

# グラフにテキストとして回帰式を追加
text(x = mean(x), y = max(y), labels = eqn, pos = 4)

# モデルの要約から情報を取得
summary_model <- summary(model)
r_squared <- summary_model$r.squared # R^2

# R^2のテキストを作成
r_squared_text <- paste("R^2 =", round(r_squared, digits = 2))
# グラフにテキストとしてR^2を追加
text(x = mean(x), y = max(y) - diff(range(y))/20, labels = r_squared_text, pos = 4, cex = 1)

回帰分析

2024/4/26

R言語で始めるRidge(リッジ)回帰:理論から実践まで【初心者向けガイド】

はじめに リッジ回帰は線形回帰モデルの一種で、予測変数間の多重共線性を扱いやすくするために正則化項を導入します。この記事では、R言語を使用してリッジ回帰を行う方法を、理論の説明から具体的なコードの実行まで段階的に解説します。 リッジ回帰の基礎 リッジ回帰(Ridge Regression)は、回帰分析において共線性を緩和し、モデルの過学習を防ぐために導入される技法です。具体的には、損失関数にL2正則化項(係数の二乗の和)を加えることで、係数の絶対値を抑え、より一般化されたモデルを生成します。 データの生成 ...

ReadMore

回帰分析

2024/4/26

R言語でLASSO回帰(ラッソ回帰)をマスター! 初心者でも理解できる実践ガイド

はじめに LASSO回帰(らっそかいき)は、機械学習でよく用いられる線形回帰モデルの一種です。LASSO回帰は、過学習を防ぎ、モデルの解釈性を高めるという特徴を持ちます。近年、データ分析や予測モデル構築において、LASSO回帰は非常に重要な役割を果たしています。 このブログ記事では、R言語を用いたLASSO回帰の実践的な方法を解説します。初学者の方でも理解しやすいように、基礎的な説明から具体的な操作手順まで、丁寧に説明していきます。 L1正則化とは? L1正則化は、損失関数に対して係数の絶対値の和を加える ...

ReadMore

統計検定

2024/2/28

クラスカルウォリス検定とは? 実際にRでやってみよう

統計学の中でも特に興味深いツールであるクラスカル・ウォリス検定について、より深く掘り下げてみましょう。この検定は、特にサンプルサイズが小さい場合や、データが正規分布に従わない場合に重宝されます。 クラスカル・ウォリス検定とは何か? クラスカル・ウォリス検定(Kruskal-Wallis test)は、簡単に言うと、3つ以上のグループのデータが同じ特性を持っているかどうか(言い換えると、サンプル群の中央値に差があるかどうか)を調べるための統計的手法です。これは、通常の分散分析(ANOVA)の代わりに使われる ...

ReadMore

統計検定

2024/2/28

Rでチューキークレーマー法(Tukey‒Kramer法)をやろう

チューキークレーマー法の基本 チューキークレーマー法(Tukey-Kramer method)は、複数のグループ間の平均値の比較に用いられる統計的手法です。この方法は、F統計量を用いない多重比較なので、特に分散分析(ANOVA)を行わなくても検定することができます。チューキークレーマー法は、「どのグループ間に差があるか」を特定するために使われます。また、チューキークレーマー法は、異なるサイズのサンプルにも適用可能です。 統計的背景 多重比較問題: 複数の比較を行うと、誤った結果(第一種の過誤)が生じる確率 ...

ReadMore

統計検定

2024/2/28

ウィルコクソンの符号付順位和検定(Wilcoxon Signed-Rank Test)とは? 実際にRでやってみよう

ウィルコクソンの符号付順位和検定(Wilcoxon Signed-Rank Test)は、統計学において広く使われているノンパラメトリックな検定方法です。この検定は、特にサンプルサイズが小さい場合やデータが正規分布に従わない場合に有効で、対応する2つのサンプル間の中央値の差異が偶然によるものかどうかを評価するために使用されます。以下では、この検定の基本的な概念、手順、適用例、注意点を初学者向けに詳しく解説します。 ウィルコクソンの符号付順位和検定の基本概念とは ウィルコクソンの符号付順位和検定は、2つの関 ...

ReadMore

特殊なグラフ

2024/4/26

R言語でQQプロットを作成する方法

はじめに QQプロット(Quantile-Quantileプロット)は統計分析で非常に役立つツールです。これを使って、データセットが特定の理論分布に従っているかどうかを視覚的に評価することができます。R言語には、この種のプロットを簡単に作成できる強力なツールが用意されています。この記事では、R言語を使用してQQプロットを作成する基本的なステップを説明します。 必要なパッケージ QQプロットを描くためには、基本的にstatsパッケージが必要ですが、これはRの標準パッケージに含まれているため、特別なインストー ...

ReadMore

グラフのカスタマイズ

2024/4/17

Rでエラーバー付きのグラフを作成する方法

はじめに データの可視化において、エラーバーはデータの変動や不確実性を表現する重要な手段です。R言語を用いたグラフ作成においてエラーバーを追加する方法を学ぶことで、データの解釈をより深く行うことが可能になります。この記事では、基本的なエラーバーの追加方法から、カスタマイズする方法までを段階的に解説します。 エラーバーを含むグラフの重要性 エラーバーは、データ点のばらつきや測定の不確かさを表すのに役立ちます。科学研究や技術報告でよく見られるこの表現方法は、データの信頼性や有効性を視覚的に伝えるために不可欠で ...

ReadMore

グラフのカスタマイズ

2024/4/17

R言語でのグラフ作成:X軸とY軸のスケール比の設定方法

はじめに R言語はデータ分析と可視化に非常に強力なツールです。特にグラフ作成機能は多くのデータサイエンティストや研究者に利用されています。この記事では、R言語でグラフを作成する際にX軸とY軸のスケール比を設定する方法を詳しく解説します。スケール比を調整することで、データの比率や関係性をより正確に表現することが可能になります。 グラフの基本的な作成方法 まず、R言語で基本的なグラフを作成する方法から見ていきましょう。ここでは、plot() 関数を使用してシンプルな散布図を描きます。 # サンプルデータの生成 ...

ReadMore

特殊なグラフ

2024/4/18

R言語でバイオリンプロットを作成する方法:データの分布を視覚化

はじめに バイオリンプロットは箱ひげ図の概念を拡張したもので、データの分布密度も同時に表現できるグラフです。この記事では、R言語を用いてバイオリンプロットを作成する手順を、基本から応用まで丁寧に解説します。 バイオリンプロットとは? バイオリンプロットは、データの確率密度を視覚的に表現する方法の一つで、中央値や四分位数といった統計量だけでなく、データの分布形状も示すことができます。これにより、データの全体的な傾向をより詳細に把握することが可能になります。 Rでバイオリンプロットを作成する Rでは、ggpl ...

ReadMore

グラフのカスタマイズ

2024/4/18

R言語で箱ひげ図に平均値を追加する方法

はじめに 箱ひげ図はデータの分布、特に四分位数や極値を視覚的に表現する強力なツールですが、時には平均値を表示することでデータの理解をさらに深めることができます。この記事では、R言語を使用して箱ひげ図に平均値を追加する方法を解説します。 箱ひげ図とは? 箱ひげ図(Boxplot)は、データの中央値、四分位数、外れ値を表示し、データの分布を要約するのに役立ちます。しかし、平均値もまたデータの中心傾向を理解するのに重要な指標であり、これを箱ひげ図に追加することで、さらに多角的なデータ解析が可能になります。 Rで ...

ReadMore

-散布図
-