PR
言語切り替え

コピペでRの有意差検定とグラフ描画ツール

R言語

3種類以上のデータの有意差検定はエクセル関数では対応していません。無料でこれを行う手段として統計解析ソフトRがありますが、慣れて活用できるまで時間がかかります。

本サイトではテンプレに必要事項を入力してRにコピペすることで簡単に有意差検定を行うツールを提供します。

サポートしているエクセルデータの形式は以下のようなものです。
カテゴリーごとの数値の平均値に有意差があるかを判定します。以下のデータではクラスごとの生徒の身長の平均値の有意差を判定します。

 

1 Excelファイルの読み込み

・作業ディレクトリの変更
こちら(別タブで開きます)を参考にして、現在のディレクトリを使用するエクセルファイルが存在するフォルダに変更します。

・読み込むエクセルシートの指定方法の選択

分析するデータが含まれるエクセルシートを読み込みます。それを指定する方法を選びます。
上のエクセルファイルを例に説明します。デフォルトでは一番目のシート、sheetAが読み込まれます。
2番目以降のシートを読み込む場合、シート指定方法を変更する必要があります。
sheetBを読み込む場合、シート名を指定する方法ではsheetBをsheetの名前の空欄に入力します。シート番号を指定する場合、sheet番号の空欄に何番目のシートかを入力します。sheetBは2番目のシートのため2と入力します。

・エクセル情報の入力とコピペ
以下の空欄にエクセルファイル名などを入力した後、copyボタンを押して、コードをコピーします。Rの>の後にペーストしてEnterを押して実行します。

 install.packages("openxlsx", repos = "cloud.r-project.org");
 library(openxlsx);
 data = read.xlsx(".xlsx")
 Copy 

2 Excelデータのヘッダーの入力

下の空欄に入力後setボタンを押します。この手順以降のテンプレに入力値が反映されます。
データのヘッダー名の空欄には数値データのエクセルファイル上のヘッダー名(写真の例では「height」)を入力。グループのヘッダー名には数値データのカテゴリー名(写真では「class」)を入力します。
 データのヘッダー名  グループのヘッダー名
 Set 

3 等分散検定(Bartlett test)

データに応じてより正しい結果を得るために、有意差検定の方法を選びます。この手順3と次の4の結果をもとに5の有意差検定の方法を決めます。2でヘッダー名、グループ名がセットされているなら、Rに1と同様にコピペしてください。
 bartlett.test(data$"" ~ data$"")
 Copy 

下はRの結果の例です。このp-valueが0.05より大きければデータは等分散です。

Bartlett test of homogeneity of variances
 
data:  data$e068 by data$shoriku
Bartlett's K-squared = 10.579, df = 3, p-value = 0.01424

4 正規性検定

3と同様にRで実行してください。同様にp-valueが0.05より大きければデータは正規分布しています。
 install.packages("onewaytest", repos = "cloud.r-project.org");
 library(onewaytest);
 nor.test( ~ , data = data)
 Copy 

5 有意差検定

3と4によりデータが等分散かどうかそして、正規分布かどうかわかりました。これをもとに検定方法を選択しRで実行してください。
・検定方法の選択
 summary(aov(data$ ~ data$ , data = data))
 Copy 
 Krasukal wallis test
 kruskal.test(data$"",data$"")
 Copy 
 Wilcox test
 pairwise.wilcox.test(data$, data$, p.adj = "bonf")
 Copy 
 Brunner Munzel test
 install.packages("lawstat", repos = "cloud.r-project.org");
 library(lawstat);
 brunner.munzel.test(data$, data$)
 Copy 

・ANOVAの例 *が一つ以上あれば有意差ありです。

            Df Sum Sq Mean Sq F value Pr(>F)   
data$class   2  546.5  273.27   15.29 0.0074 **
Residuals    5   89.3   17.87  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
・Tukey検定の例 p adjの値が0.05より小さければ有意差ありと判定します。クラスB-A、C-B間では有意差がありませんが、クラスC-A間に有意差はあります。
Tukey multiple comparisons of means
    95% family-wise confidence level
Fit: aov(formula = data$height ~ data$class)
$`data$class`
        diff        lwr      upr     p adj
B-A 12.33333 -0.2222487 24.88892 0.0531909
C-A 21.33333  8.7777513 33.88892 0.0061408
C-B  9.00000 -2.2300540 20.23005 0.1023866
・Kruskal検定の例 p-valueが0.05以下であれば有意差ありです。
        Kruskal-Wallis rank sum test
data:  data$height and data$class
Kruskal-Wallis chi-squared = 6.25, df = 2, p-value = 0.04394
・Wilcoxon検定の例 p値が表で示されています。
         Pairwise comparisons using Wilcoxon rank sum exact test 
data:  data$height and data$class 
  A   B  
B 0.6 -  
C 0.6 0.3
P value adjustment method: bonferroni 

6 グラフの描画

設定をした後Setボタンを押すとテキストエリアにコードが表示されます。

グラフタイプの選択
棒または箱の太さ
オプションの設定
ドットのサイズ
サイズ

最少目盛り最大目盛り目盛り単位
 図形サイズ
 棒または箱の数*
**
 棒または箱の数*  
 Set 

 Copy 
* 一番下のグラフ画像の例では棒や箱が3個ずつあるのでこの値は3になります。
**今回の例ではclassがA~Cまで存在し、これをC、B、Aの順番に棒または箱を並べたいのであれば最初のテキストボックスにC、次にB、最後のボックスにAを入力します。

7 グラフの保存

ファイル名、ファイル形式を指定してグラフを保存します。
 ggsave(".")
 Copy 

コメント