Rで何かをしたり、読書をするブログ

政府統計の総合窓口のデータや、OECDやUCIやのデータを使って、Rの練習をしています。ときどき、読書記録も載せています。

都道府県別の病院報告のデータの分析 6 - infer パッケージのワークフローでt検定

www.crosshyou.info

の続きです。前回は、t.test()関数で令和5年の精神科病院の在院患者数の比率と令和3年の比率を比較して、統計的に有意な差は認められないことを確認しました。

今回は、inferパッケージのワークフローを適用して、コンピューターシミュレーションベースでも差が認められないことを確認してみます。

まずは、inferパッケージを読み込みます。

infer.netlify.app

こちらのウェブサイトを参考にしてコードを書いていきます。

まずは、観察された統計値をだします。

diffの平均値は、-0.00127です。

次に、null distributionを生成します。

このコードに意味は、diffの平均値が0だという帰無仮説のものて、1000回、ランダムなdiffの分布をブートストラップ法で生成して、1000個の平均値を生成、ということです。

この1000個の平均値を視覚化します。

赤い垂線が実際に観察された平均値です。ちょっと0からは外れてはいます。

p値を計算します。

p値は0.074です。これは前回のt.test()関数でのp値と同じですね。

5%水準では、有意な差は認められないけれども、10%水準では有意な差を認められる、という微妙なところですね。

今回は以上です。

はじめから読むには、

www.crosshyou.info

です。

今回のコードは以下になります。

#
# inferパッケージを読み込む
library(infer)
#
# 観察された統計値
observed_statistic <- df_ratio |> 
  specify(response = diff) |> 
  calculate(stat = "mean")
observed_statistic
#
# null distributionの生成
set.seed(210)
null_dist_1_sample <- df_ratio |> 
  specify(response = diff) |> 
  hypothesize(null = "point", mu = 0) |> 
  generate(rep = 1000, type = "bootstrap") |> 
  calculate(stat = "mean")
#
# null distributionの視覚化
null_dist_1_sample |> 
  visualize() +
  shade_p_value(
    observed_statistic,
    direction = "two-sided"
  )
#
# p値の計算
p_value_1_sample <- null_dist_1_sample |> 
  get_p_value(obs_stat = observed_statistic,
              direction = "two-sided")
p_value_1_sample
#
# t.test関数でのp値
t.test(df_ratio$diff)$p.value
#

(冒頭の画像は、Bing Image Creator で生成しました。プロンプトは Landscape of higher Japanese mountains, flowering blue iris flowers on the foot of mountains, photo です)