Rで解析:各種検定を「ggplot2」で表示するのが楽々です!「statsExpressions」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

one_sample_test、two_sample_test、oneway_anovaの各種検定方法が可能なだけでなく、結果を「ggplot2」で表示するのが簡単なパッケージの紹介です。

本パッケージの結果は「tibble」形式で出力されているので必要な情報を抽出するのが簡単です。「ggplot2」での表示は「ggplot2::labs」コマンドを使用していますが、この内容で充分すぎると思います。

パッケージバージョンは1.3.3。実行コマンドはwindows 11のR version 4.2.1で確認しています。

スポンサーリンク

パッケージのインストール

下記、コマンドを実行してください。

#パッケージのインストール
install.packages("statsExpressions")

2サイズのケトルベルとダンベルのAmazonアソシエイトの紹介

パフォーマンスを発揮するには体が資本です。ケトルベルとダンベルは多くの筋トレのメニュが可能です。ケトルベルやダンベルも「からだにいいもの」です。実験的な紹介です。

実行コマンド

詳細はコメント、パッケージのヘルプを確認してください。

#パッケージの読み込み
library("statsExpressions")

###データ例の作成#####
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}
set.seed(1234)
n <- 30
TestData <- tibble(Group = sample(paste0("Group_",
                                         formatC(1:4, width = 2, flag = "0")),
                                  n, replace = TRUE),
                   A_Data = sample(c(1:50), n, replace = TRUE),
                   B_Data = sample(c(51:100), n, replace = TRUE),
                   C_Data = sample(c(51:100), n, replace = TRUE)) %>%
  rowid_to_column("ID")
########

#&#21508;&#31278;one_sample_test:one_sample_test&#12467;&#12510;&#12531;&#12489;
#&#32048;&#12363;&#12356;&#35373;&#23450;&#12399;one_sample_test?&#12434;&#21442;&#29031;
#&#25968;&#20516;&#12487;&#12540;&#12479;&#12398;&#25351;&#23450;:x&#12458;&#12503;&#12471;&#12519;&#12531;
#&#26908;&#23450;&#25163;&#27861;:type&#12458;&#12503;&#12471;&#12519;&#12531;;&#26908;&#23450;&#25163;&#27861;&#12362;&#12424;&#12403;&#21442;&#29031;&#20351;&#29992;&#12467;&#12510;&#12531;&#12489;
#"parametric":One-sample_Student's_t-test;stats::t.test()
#"nonparametric":One-sample_Wilcoxon_test;stats::wilcox.test()
#"robust":Bootstrap-t_method for_one-sample_test;WRS2::trimcibt()
#"bayes":One-sample_Student's_t-test;BayesFactor::ttestBF()
#&#26082;&#30693;&#12398;&#27597;&#24179;&#22343;:test.value&#12458;&#12503;&#12471;&#12519;&#12531;
#&#20001;&#20596;/&#29255;&#20596;&#26908;&#23450;:alternative&#12458;&#12503;&#12471;&#12519;&#12531;;"two.sided","greater","less"
#&#20449;&#38972;&#21306;&#38291;:conf.level&#12458;&#12503;&#12471;&#12519;&#12531;
one_sample_test(data = TestData %>% filter(Group == "Group_01"),
                x = A_Data,
                test.value = TestData %>%
                  summarize(mean(A_Data)) %>%
                  as.numeric(),
                type = "parametric") -> Result_OneSample_Test

#&#20363;&#12360;&#12400;&#12371;&#12435;&#12394;&#20351;&#12356;&#26041;:&#32080;&#26524;&#19968;&#35239;&#12399;$expression[[1]]&#12395;&#21454;&#37682;&#12373;&#12428;&#12390;&#12356;&#12427;&#12398;&#12434;&#21033;&#29992;&#12375;&#12390;
#ggplot2::labs&#12467;&#12510;&#12531;&#12489;&#12434;&#21033;&#29992;&#12377;&#12427;
ggplot(data = TestData %>% filter(Group == "Group_01"),
       aes(x = Group, y = A_Data, fill = Group)) +
  geom_boxplot() +
  geom_boxplot(aes(y = TestData %>%
                     summarize(mean(A_Data)) %>%
                     as.numeric()), col = "red", size = 3) +
  labs(title = "One-sample_Student's_t-test &#36196;&#32218;&#12399;&#26082;&#30693;&#12398;&#27597;&#24179;&#22343;",
       x = NULL,
       subtitle = Result_OneSample_Test$expression[[1]])
               

#&#21508;&#31278;two_sample_test:two_sample_test&#12467;&#12510;&#12531;&#12489;
#&#32048;&#12363;&#12356;&#35373;&#23450;&#12399;two_sample_test?&#12434;&#21442;&#29031;
#&#26908;&#23450;&#25163;&#27861;:type&#12458;&#12503;&#12471;&#12519;&#12531;;&#26908;&#23450;&#25163;&#27861;&#12362;&#12424;&#12403;&#21442;&#29031;&#20351;&#29992;&#12467;&#12510;&#12531;&#12489;
#"parametric":Student's(paired/var.equal=TRUE)
#Welch's_t-test(paired/var.equal=FALSE);stats::t.test();
#"nonparametric":Mann-Whitney_U_test;stats::wilcox.test()
#"robust":Yuen's_test_for_trimmed_means;WRS2::WRS2::yuen()
#"bayes":Student's_t-test;BayesFactor::ttestBF()
#&#34987;&#39443;&#32773;&#20869;/&#34987;&#39443;&#32773;&#38291;:paired&#12458;&#12503;&#12471;&#12519;&#12531;;TRUE/FALSE
#&#31561;&#20998;&#25955;&#12363;&#12393;&#12358;&#12363;:var.equal&#12458;&#12503;&#12471;&#12519;&#12531;;TRUE/FALSE
two_sample_test(data = TestData %>%
                  select(-C_Data) %>%
                  pivot_longer(cols = c(A_Data, B_Data),
                               names_to = "Point",
                               values_to = "Value"),
                x = Point, y = Value,
                paired = FALSE, var.equal = FALSE,
                type = "parametric") -> Result_TwoSample_Test

#&#20363;&#12360;&#12400;&#12371;&#12435;&#12394;&#20351;&#12356;&#26041;:&#32080;&#26524;&#19968;&#35239;&#12399;$expression[[1]]&#12395;&#21454;&#37682;&#12373;&#12428;&#12390;&#12356;&#12427;&#12398;&#12434;&#21033;&#29992;&#12375;&#12390;
#ggplot2::labs&#12467;&#12510;&#12531;&#12489;&#12434;&#21033;&#29992;&#12377;&#12427;
ggplot(data = TestData %>% select(c(A_Data, B_Data)) %>%
         pivot_longer(cols = c(A_Data, B_Data),
                      names_to = "Point",
                      values_to = "Value"),
       aes(x = Point, y = Value)) +
  stat_summary(aes(fill = Point), fun = "mean", geom = "bar")  +
  labs(title = "two_sample_Welch's t-test",
       x = NULL,
       subtitle = Result_TwoSample_Test$expression[[1]])


#&#21508;&#31278;oneway_anova:oneway_anova&#12467;&#12510;&#12531;&#12489;
#&#32048;&#12363;&#12356;&#35373;&#23450;&#12399;oneway_anova?&#12434;&#21442;&#29031;
#&#26908;&#23450;&#25163;&#27861;:type&#12458;&#12503;&#12471;&#12519;&#12531;;&#26908;&#23450;&#25163;&#27861;&#12362;&#12424;&#12403;&#21442;&#29031;&#20351;&#29992;&#12467;&#12510;&#12531;&#12489;
#"parametric":Fisher's_or_Welch's_one-way_ANOVA;stats::oneway.test()
#"nonparametric":Kruskal-Wallis_one-way_ANOVA;stats::kruskal.test()
#"robust":Heteroscedastic_one-way_ANOVA_for_trimmed_means;WRS2::t1way()
#"bayes":Fisher's_ANOVA;BayesFactor::anovaBF()
oneway_anova(TestData, Group,
             A_Data, type = "nonparametric") -> Result_OneWayAnova

#&#20363;&#12360;&#12400;&#12371;&#12435;&#12394;&#20351;&#12356;&#26041;:&#32080;&#26524;&#19968;&#35239;&#12399;$expression[[1]]&#12395;&#21454;&#37682;&#12373;&#12428;&#12390;&#12356;&#12427;&#12398;&#12434;&#21033;&#29992;&#12375;&#12390;
#ggplot2::labs&#12467;&#12510;&#12531;&#12489;&#12434;&#21033;&#29992;&#12377;&#12427;
ggplot(data = TestData,
       aes(x = Group, y = A_Data, fill = Group)) +
  geom_boxplot() +
  labs(title = "Oneway_anova_Kruskal-Wallis",
       x = NULL,
       subtitle = Result_OneWayAnova$expression[[1]])

出力例

・one_sample_testコマンド

・two_sample_testコマンド

・oneway_anovaコマンド


少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました