広告 特殊なグラフ

Rで散布図の行列を作る方法

2023年11月11日

エクセルデータの準備

日本の産業別実質GDPの推移のエクセルデータを用意しました。Rで読み込んでいくのは青色のセルのみ読み込んでいきます。詳しくは以前のブログ記事を参考にしてください。

スクリプトは次のとおりです。

library(readxl) 

# Excelファイルのパス(ご自身のファイル名と場所に書き換えてください)
file_path <- "F:/ブログ用/17R/関数辞典/04 read_excel/GDP.xlsx"

# read_excel関数のオプションを設定してデータフレームを読み込む
df <- read_excel(
path = file_path,
sheet = "Sheet3", # シート名
range = "A2:I22", # 読み込む範囲
col_types = c("text", rep("numeric",8)), # 列のデータ型を指定
na = "NA", # 欠損値として扱う文字列
skip = 1, # 最初の1行をスキップ
n_max = 50 # 読み込む最大行数
)

dfファイルは次のとおりです。

散布図の行列の作成

散布図の行列を作成するにはpairs関数を使います。

今回の20×9のデータフレームでpairs関数を使用して散布図の行列を作成するには、まずデータフレームから1列目(サンプル名)を除外して、変数のみを含む新しいデータフレームを作成する必要があります。以下に、そのためのRスクリプトを示します。

# サンプル名を除外した新しいデータフレームを作成
df_variables <- df[, -1]

新たに作った、df_variablesを見てみましょう。1列目(year)が無くなっているのが確認できます。

準備が整ったのでpair関数を使って散布図の行列を作成しましょう。
スクリプトは次のとおりです。

# 散布図行列の作成
pairs(df_variables)

少し時間がかかるかもしれませんが次のようなグラフが出力されます。

カスタマイズ① 変数名を折り返し表示

変数の文字が小さくて見にくいので修正しましょう。

Rのpairs関数を使用して散布図行列を作成する際に、変数名を折り返して表示させることは少し複雑ですが、可能です。
これを実現するためには、カスタムのラベル関数を定義して、pairs関数のlabels引数にそれを渡す必要があります。

以下のステップでカスタムラベル関数を作成し、それをpairs関数で使用します。

  1. 変数名を折り返すカスタム関数を定義する。
  2. pairs関数のlabels引数にこの関数を適用する。

以下に例を示します。途中からだと分かりづらくなるので、エクセルファイルの読み込みのところから最後までまとめて示します。

library(readxl)

# Excelファイルのパス
file_path <- "F:/ブログ用/17R/関数辞典/04 read_excel/GDP.xlsx"

# read_excel関数のオプションを設定してデータフレームを読み込む
df <- read_excel(
path = file_path,
sheet = "Sheet3", # シート名
range = "A2:I22", # 読み込む範囲
col_types = c("text", rep("numeric",8)), # 列のデータ型を指定
na = "NA", # 欠損値として扱う文字列
skip = 1, # 最初の1行をスキップ
n_max = 50 # 読み込む最大行数
)

# サンプル名を除外したデータフレームを作成
df_variables <- df[, -1]


# 変数名を折り返すカスタム関数
wrap_label <- function(label, width = 10) {
sapply(strsplit(label, " "), function(x) {
paste(strwrap(unlist(x), width = width), collapse = "\n")
})
}

# 散布図行列の作成
pairs(df_variables, labels = wrap_label(colnames(df_variables)))

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

文字がだいぶ見やすくなりました。

カスタマイズ② 回帰直線と相関係数を表示

グラフの見方

上の写真のAのグラフは、x軸がinformation and communication、y軸がsteel industoryです。
Bのグラフは、x軸がsteel industryでy軸がinformation and communicationです。
結局、AとBの位置のグラフは軸の反転以外は同じグラフになります。
重複したデータを載せるのももったいないので、右上半分には相関係数を表示させるようにしましょう。その方がスペースの有効活用ができます。また、散布図の方には回帰直線を追加して表示するようにしてみたいと思います。

スクリプトを以下に示します。先ほどと同様にエクセルファイルの読み込みから最後まで通して記載します。

library(readxl)

# Excelファイルのパス
file_path <- "F:/ブログ用/17R/関数辞典/04 read_excel/GDP.xlsx"

# read_excel関数のオプションを設定してデータフレームを読み込む
df <- read_excel(
path = file_path,
sheet = "Sheet3", # シート名
range = "A2:I22", # 読み込む範囲
col_types = c("text", rep("numeric",8)), # 列のデータ型を指定
na = "NA", # 欠損値として扱う文字列
skip = 1, # 最初の1行をスキップ
n_max = 50 # 読み込む最大行数
)

# サンプル名を除外したデータフレームを作成
df_variables <- df[, -1]


# 変数名を折り返すカスタム関数
wrap_label <- function(label, width = 10) {
sapply(strsplit(label, " "), function(x) {
paste(strwrap(unlist(x), width = width), collapse = "\n")
})
}


# 相関係数を表示するカスタム関数
panel.cor <- function(x, y, digits=2, cex.cor=0.8, cex.min=0.5) {
usr <- par("usr"); on.exit(par(usr))
par(usr = c(0, 1, 0, 1))
r <- cor(x, y)
txt <- format(c(r, 0.123456789), digits=digits)[1]
# 相関係数の絶対値に基づいてフォントサイズを調整し、最小値を設定
cex.size <- max(cex.cor + abs(r), cex.min)
text(0.5, 0.5, txt, cex = cex.size)
}

# 散布図行列の作成
pairs(df_variables, upper.panel = panel.cor, lower.panel = panel.smooth, labels = wrap_label(colnames(df_variables)))

このスクリプトを実行すると次のようなグラフになります。

特殊なグラフ

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

回帰分析

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

-特殊なグラフ
-