modeldata

Author

データサイエンス関連基礎調査WG

Published

August 1, 2025

パッケージの概要

modeldataには、Rにおけるモデリングや機械学習のためのツール群として有名なtidymodelsパッケージ[1]のドキュメントやテストに使用されたデータセットが含まれており、これらは様々な機械学習や予測モデリングのサンプルデータとしても活用することができます。 また、データセットそのものに加え、分類や回帰課題のためのシミュレーションデータを生成する関数も含まれています。

パッケージの使用例

データセット

modeldataには様々なデータセットが用意されています。 データセットは以下のように、データセット名を指定してロードすることができます。

library(modeldata)

Attaching package: 'modeldata'
The following object is masked from 'package:datasets':

    penguins
data("Chicago", package = "modeldata")
str(Chicago)
Classes 'tbl_df', 'tbl' and 'data.frame':   5698 obs. of  50 variables:
 $ ridership       : num  15.7 15.8 15.9 15.9 15.4 ...
 $ Austin          : num  1.46 1.5 1.52 1.49 1.5 ...
 $ Quincy_Wells    : num  8.37 8.35 8.36 7.85 7.62 ...
 $ Belmont         : num  4.6 4.72 4.68 4.77 4.72 ...
 $ Archer_35th     : num  2.01 2.09 2.11 2.17 2.06 ...
 $ Oak_Park        : num  1.42 1.43 1.49 1.45 1.42 ...
 $ Western         : num  3.32 3.34 3.36 3.36 3.27 ...
 $ Clark_Lake      : num  15.6 15.7 15.6 15.7 15.6 ...
 $ Clinton         : num  2.4 2.4 2.37 2.42 2.42 ...
 $ Merchandise_Mart: num  6.48 6.48 6.41 6.49 5.8 ...
 $ Irving_Park     : num  3.74 3.85 3.86 3.84 3.88 ...
 $ Washington_Wells: num  7.56 7.58 7.62 7.36 7.09 ...
 $ Harlem          : num  2.65 2.76 2.79 2.81 2.73 ...
 $ Monroe          : num  5.67 6.01 5.79 5.96 5.77 ...
 $ Polk            : num  2.48 2.44 2.53 2.45 2.57 ...
 $ Ashland         : num  1.32 1.31 1.32 1.35 1.35 ...
 $ Kedzie          : num  3.01 3.02 2.98 3.01 3.08 ...
 $ Addison         : num  2.5 2.57 2.59 2.53 2.56 ...
 $ Jefferson_Park  : num  6.59 6.75 6.97 7.01 6.92 ...
 $ Montrose        : num  1.84 1.92 1.98 1.98 1.95 ...
 $ California      : num  0.756 0.781 0.812 0.776 0.789 0.37 0.274 0.473 0.844 0.835 ...
 $ temp_min        : num  15.1 25 19 15.1 21 19 15.1 26.6 34 33.1 ...
 $ temp            : num  19.4 30.4 25 22.4 27 ...
 $ temp_max        : num  30 36 28.9 27 32 30 28.9 41 43 36 ...
 $ temp_change     : num  14.9 11 9.9 11.9 11 11 13.8 14.4 9 2.9 ...
 $ dew             : num  13.4 25 18 10.9 21.9 ...
 $ humidity        : num  78 79 81 66.5 84 71 74 93 93 89 ...
 $ pressure        : num  30.4 30.2 30.2 30.4 29.9 ...
 $ pressure_change : num  0.12 0.18 0.23 0.16 0.65 ...
 $ wind            : num  5.2 8.1 10.4 9.8 12.7 12.7 8.1 8.1 9.2 11.5 ...
 $ wind_max        : num  10.4 11.5 19.6 16.1 19.6 17.3 13.8 17.3 23 16.1 ...
 $ gust            : num  0 0 0 0 0 0 0 0 0 0 ...
 $ gust_max        : num  0 0 0 0 25.3 26.5 0 26.5 31.1 0 ...
 $ percip          : num  0 0 0 0 0 0 0 0 0 0 ...
 $ percip_max      : num  0 0 0 0 0 0 0 0.07 0.11 0.01 ...
 $ weather_rain    : num  0 0 0 0 0 ...
 $ weather_snow    : num  0 0 0.214 0 0.516 ...
 $ weather_cloud   : num  0.708 1 0.357 0.292 0.452 ...
 $ weather_storm   : num  0 0.2083 0.0714 0.0417 0.4516 ...
 $ Blackhawks_Away : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Blackhawks_Home : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Bulls_Away      : num  0 0 1 0 0 0 0 0 1 0 ...
 $ Bulls_Home      : num  0 1 0 0 0 1 0 0 0 0 ...
 $ Bears_Away      : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Bears_Home      : num  0 0 0 0 0 0 0 0 0 0 ...
 $ WhiteSox_Away   : num  0 0 0 0 0 0 0 0 0 0 ...
 $ WhiteSox_Home   : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Cubs_Away       : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Cubs_Home       : num  0 0 0 0 0 0 0 0 0 0 ...
 $ date            : Date, format: "2001-01-22" "2001-01-23" ...

以下は格納されているデータセットの一覧です。(バージョン1.4.0時点です。) 各データのカラムやデータソース等の詳細は、modeldataのリファレンス[2]をご参照ください。

データセット名 概要 レコード数 カラム数
Chicago stations シカゴの鉄道乗客数データ
   5698
     20
    50
     1
Sacramento サクラメント市(カリフォルニア州)の住宅価格
    932
     9
Smithsonian スミソニアン博物館のジオコードデータ
     20
     3
ad_data アルツハイマー病に関する333患者のデータ
    333
   131
ames エイムズ市(アイオワ州)の住宅データ
   2930
    74
attrition 従業員の離職に関するデータ
   1470
    31
biomass バイオマス燃料のデータ
    536
     8
bivariate_test bivariate_train bivariate_val 二値分類用データの例
    710
   1009
    300
     3
     3
     3
car_prices ケリー・ブルー・ブック社によるGM車のリセールデータ
    804
    18
cat_adoption 保護猫の譲渡に関するデータ
   2257
    20
cells 細胞体の分類
   2019
    58
check_times rパッケージの実行時間のデータ
  13626
    25
chem_proc_yield 化学製品の整合工程に関するデータセット
    176
    58
concrete コンクリート混合物の圧縮強度
   1030
     9
covers 森林の主要な樹木に関する未加工のテキストデータ
     40
     1
credit_data 信用リスクの分類用データ
   4454
    14
crickets コオロギが鳴く頻度と気温の関係
     31
     3
deliveries フード・デリバリーの配送時間のデータ
  10012
    31
drinks アルコール類の売上の時系列データ
    309
     2
grants_2008 grants_other grants_test 学術助成金の採択/非採択のデータ
   6633
   8190
    518
     1
  1503
  1503
hepatic_injury_qsar 肝臓損傷の分類用データ
    281
   377
hotel_rates リスボンにおけるホテル料金のデータ
  15402
    28
hpc_cv 高性能計算(HPC)環境における実行時間のクラス確率の予測
   3467
     7
hpc_data 高性能計算(HPC)環境における実行時間のクラス分類用データ
   4331
     8
ischemic_stroke 虚血性脳卒中の有無を予測するためのデータ
    126
    29
leaf_id_flavia 葉のイメージデータの特徴量から植物の種を特定するデータ
   1907
    59
lending_club レンディング・クラブ・サービスのローンデータ
   9857
    23
meats 肉サンプルの脂肪含有量、水分含有量、タンパク質含有量
    215
   103
mlc_churn 顧客の解約に関するデータ
   5000
    20
oils 市販の油の脂肪酸濃度
     96
     8
parabolic 放物線状の境界を持つ二値分類データ
    500
     3
pathology 肝臓の病理データ
    344
     2
pd_speech パーキンソン病患者の発話の分類データ
    252
   752
penguins パーマー基地のペンギンのデータ
    344
     7
permeability_qsar 分子構造に関する化学情報から透過性を予測するデータ
    165
  1108
scat 動物の糞の形態計測データ
    110
    19
solubility_test 多変量適応的回帰スプライン(MARS)モデルによる溶解度の予測
    316
     2
stackoverflow Stack Overflowによる年次サーベイのデータ
   5594
    21
steroidogenic_toxicity ステロイド生成毒性を評価するためのin vitroアッセイデータ
    162
    13
tate_text テート・ギャラリーの近現代美術作品のメタデータ
   4284
     5
taxi シカゴのタクシーのデータセット
  10000
     7
testing_data training_data Amazonの食品レビューのデータ
   1000
   4000
     3
     3
two_class_dat 2クラス分類用に人工的に作成したデータ
    791
     3
two_class_example 2クラス分類の予測値
    500
     4
wa_churn IBMワトソンのサイトから取得した顧客解約データ
   7043
    20

データ生成関数

modeldataには前項で紹介したデータセットに加え、データを生成するための関数も用意されています。

sim_classification

sim_classification関数は、二値分類用のシミュレーションデータを生成します。
以下はデータ生成の実行例です。 引数methodには生成方法を指定しますが、バージョン1.4.0時点では”caret”が唯一のオプションとなっており、caretパッケージ[3]のcaret::twoClassSim()関数と同じ生成方法が実装されています。

set.seed(1234)

d1 <- sim_classification(
  num_samples = 100,  # 生成するレコード数(デフォルトは100)
  method = "caret",   # 生成方法(デフォルトは"caret")
  intercept = -5,     # クラスの偏りをコントロールする(デフォルトは-5)
  num_linear = 2,     # クラス分類に無相関の変数linear_nの数(デフォルトは10)
  keep_truth = TRUE   # class_1のクラス確率の出力有無(デフォルトはFALSE)
)

str(d1)
tibble [100 × 9] (S3: tbl_df/tbl/data.frame)
 $ class       : Factor w/ 2 levels "class_1","class_2": 1 2 1 1 2 2 2 2 2 2 ...
 $ two_factor_1: num [1:100] -1.796 0.637 1.354 -2.716 1.04 ...
 $ two_factor_2: num [1:100] -1.3053 0.0755 1.432 -3.3104 0.0626 ...
 $ non_linear_1: num [1:100] 0.372 -0.167 0.514 0.552 0.147 ...
 $ non_linear_2: num [1:100] 0.6689 0.801 0.8555 0.0501 0.6744 ...
 $ non_linear_3: num [1:100] 0.281 0.174 0.17 0.561 0.429 ...
 $ linear_1    : num [1:100] -2.316 0.562 -0.784 -0.226 -1.587 ...
 $ linear_2    : num [1:100] 0.363 1.411 1.368 -0.407 0.763 ...
 $ .truth      : num [1:100] 0.99145 0.00313 0.84924 1 0.00423 ...

“class”が、当該レコードが属するクラスを示すファクター変数で、class_1とclass_2のいずれかのレベルが格納されています。
他の変数はclass_1とclass_2のうちどちらに属するかを予測するための説明変数(の候補)ですが、実際にクラス分類に使用できるのはtwo_factor_1とtwo_factor_2で、他はクラスと無相関という設定になっています。 具体的には、two_factor_1とtwo_factor_2の主効果と交互作用および引数に指定したinterceptによるバイアス(intercept - 4 * two_factor_1 + 4 * two_factor_2 + 2 * two_factor_1 * two_factor_2)を主な要素として計算した値を、ロジスティック関数でclass_1確率に変換し、当該確率をもとにランダムでクラスを割り当てています。

以下では生成したデータの分析イメージの参考例として、two_factor_1とtwo_factor2を使用して2クラスを分離する線形識別関数を求めています。 w_0+w_1*two\_factor\_1 + w_2*two\_factor\_2\geq0であればクラス1に、w_0+w_1*two\_factor\_1 + w_2*two\_factor\_2<0であればクラス2に分類するモデルを考えます。 教師データを、クラス1なら+1、クラス2なら-1として、最小二乗誤差基準により係数を推定しています。

# 線形識別関数のパラメータ推定
y <- ifelse(as.numeric(d1$class) > 1, -1, 1)  # 教師データをclass_1=1, class_2=-1に変換
X <- cbind(1, as.matrix(d1[, c("two_factor_1", "two_factor_2")])) # パターン行列
w_hat <- solve(t(X) %*% X) %*% t(X) %*% y     # 正規方程式で最小二乗法の解を求める

# 結果のplot
plot(x=d1$two_factor_1, y=d1$two_factor_2, 
     pch=ifelse(as.numeric(d1$class)==1, 1, 3), 
     col=d1$class)
legend("topleft", legend=levels(d1$class), pch=c(1, 3), col=c(1, 2))
abline(a=w_hat[1]/w_hat[3], b=-w_hat[2]/w_hat[3], lty=2)

sim_regression

sim_regression関数は、回帰用のシミュレーションデータを生成します。 以下の実行例の通り、目的変数outcomeとその数値の算出に使用した説明変数(predictor)が出力されます。

d2 <- sim_regression(
  num_samples = 100,      # 生成するレコード数(デフォルトは100)
  method = "sapp_2014_1", # 生成方法(デフォルトは"sapp_2014_1")
  std_dev = NULL,         # 平均0の正規分布によるエラー項の標準偏差(デフォルトはNULLで、NULLの場合methodごとに決まった値が使用される)
  factors = FALSE,        # predictorに二値変数が含まれる場合のfactor化有無(デフォルトはFALSE)
  keep_truth = TRUE       # エラー項を含まない予測値の出力有無(デフォルトはFALSE)
)

str(d2)
tibble [100 × 22] (S3: tbl_df/tbl/data.frame)
 $ outcome     : num [1:100] 86.16 3.85 2.92 1.63 -29.98 ...
 $ predictor_01: num [1:100] 0.9404 1.8374 -5.0732 2.3541 0.0358 ...
 $ predictor_02: num [1:100] 1.365 4.276 -0.627 -3.694 -1.082 ...
 $ predictor_03: num [1:100] -3.072 -4.163 -0.148 5.433 -0.299 ...
 $ predictor_04: num [1:100] -8.62 -1.28 -4.46 1.77 -1.33 ...
 $ predictor_05: num [1:100] -3.616 0.904 -4.617 1.906 2.109 ...
 $ predictor_06: num [1:100] 0.34 -1.695 0.242 -2.087 -3.289 ...
 $ predictor_07: num [1:100] -4.21 7.15 2.62 -4.61 3.4 ...
 $ predictor_08: num [1:100] 3.15 1.1 5.92 1.34 -1.47 ...
 $ predictor_09: num [1:100] -6.019 -4.679 5.888 -0.535 4.073 ...
 $ predictor_10: num [1:100] 5.38 -4.09 -2.12 -1.67 -0.93 ...
 $ predictor_11: num [1:100] -0.748 -3.666 -0.218 4.095 -1.373 ...
 $ predictor_12: num [1:100] -1.35 4.332 -0.466 -3.065 4.615 ...
 $ predictor_13: num [1:100] -1.597 -1.496 -3.45 0.379 1.419 ...
 $ predictor_14: num [1:100] 3.372 2.093 0.543 -0.509 -0.704 ...
 $ predictor_15: num [1:100] -2.921 -0.299 -0.332 3.577 -4.968 ...
 $ predictor_16: num [1:100] -0.806 0.353 -2.567 6.526 -3.973 ...
 $ predictor_17: num [1:100] 1.634 1.589 -2.139 0.177 -2.733 ...
 $ predictor_18: num [1:100] -0.44 2.02 2.43 5.27 -3.65 ...
 $ predictor_19: num [1:100] -2.093 0.054 -0.538 -1.95 -5.075 ...
 $ predictor_20: num [1:100] -4.099 1.618 -3.966 -0.844 -6.315 ...
 $ .truth      : num [1:100] 80.258 5.973 4.227 0.864 -26.845 ...

predictorの数や生成方法、およびそれらのpredictorから目的変数outcomeを計算する算式は、method引数の指定により異なります。
上の実行例で指定した”sapp_2014_1”では、平均0、分散9の正規乱数を独立に20個生成してpredictorとし、以下コードに示す計算式の算出結果に正規分布に従うエラー項を加算してoutcomeを作成しています。

y <- with(d2,
     # "sapp_2014_1"の算式
       predictor_01 + sin(predictor_02) + log(abs(predictor_03)) +
       predictor_04^2 + predictor_05 * predictor_06 +
       ifelse(predictor_07 * predictor_08 * predictor_09 < 0, 1, 0) +
       ifelse(predictor_10 > 0, 1, 0) + predictor_11 * ifelse(predictor_11 > 0, 1, 0) +
       sqrt(abs(predictor_12)) + cos(predictor_13) + 2 * predictor_14 + abs(predictor_15) +
       ifelse(predictor_16 < -1, 1, 0) + predictor_17 * ifelse(predictor_17 < -1, 1, 0) -
       2 * predictor_18 - predictor_19 * predictor_20
)

# パッケージの計算結果との比較
head(data.frame(list(
  .truth = d2$.truth,
  check = y
)))
       .truth       check
1  80.2583408  80.2583408
2   5.9726707   5.9726707
3   4.2265011   4.2265011
4   0.8642132   0.8642132
5 -26.8451499 -26.8451499
6  -7.8300851  -7.8300851

バージョン1.4.0時点では、生成方法を指定するmethod引数として、“sapp_2014_1”以外にも”sapp_2014_2”、“van_der_laan_2007_1”および”van_der_laan_2007_2”が選択可能です。 それぞれの生成方法の詳細はリファレンス[2]をご参照ください。

sim_noise

sim_noise関数は平均0、分散1の正規分布に従う乱数を生成します。

d3 <- sim_noise(
  num_samples = 10,           # 生成するレコード数
  num_vars = 3,               # 生成するカラム(正規乱数)の数
  cov_type = "exchangeable",  # 分散共分散行列の設定(デフォルトは"exchangeable")
  outcome = "none",           # outcome変数の出力有無(デフォルトは"none")
  num_classes = 2,            # outcome="classification"の場合のクラス数(デフォルトは2)
  cov_param = 0               # 変数間の共分散に関するパラメータ(デフォルトは0)
)

str(d3)
tibble [10 × 3] (S3: tbl_df/tbl/data.frame)
 $ noise_1: num [1:10] 0.6842 0.5628 -0.0469 -1.1456 0.1879 ...
 $ noise_2: num [1:10] 0.961 0.306 -0.15 0.465 -0.471 ...
 $ noise_3: num [1:10] 2.11547 0.80998 -0.00872 0.16157 -0.91603 ...

各レコードはnoise_iとしてnum_varsで指定した数だけ変数が生成されていますが、これらは多変量正規分布に従っています。 この多変量正規分布は、前述のとおり平均は0、分散共分散行列の対角成分(分散)は1に固定されていますが、変数間の共分散は引数cov_typeとcov_paramで制御します。 cov_type=“exchangeable”を指定すると、どの(異なる)変数間の共分散もcov_paramで設定した値になります。 一方、cov_type=“toeplitz”では、cov_paramで指定した値から、変数間のインデックスが離れるにつれて共分散が指数的に変化するような行列となります。(例えば、noise_1とnoise_2間の共分散がcov_param=0.5とすると、noise_1とnoise_3間の共分散は0.5^2=0.25、noise_1とnoise_4間の共分散は0.5^3=0.125等となります。)

引数outcomeに”regression”または”classification”を指定すると、それぞれ数値変数及びクラスを示すファクター変数が出力されますが、いずれも変数noise_iとは関連のない、ランダムな値が設定されます。

sim_logistic、sim_multinomial

sim_logistic関数及びsim_multinomial関数は、それぞれ2クラス分類および3クラス分類用のデータを生成します。 平均0、分散1、相関係数が引数correlationに従う正規乱数AおよびBの2変数を説明変数として使用しますが、クラス確率を計算するためのAとBの算式を、柔軟に設定できる点が特徴です。

以下はsim_logistic関数による実行例です。 引数eqnには”~“から始まる2変数AとBの式、すなわち右辺のみのformulaオブジェクトを指定します。 eqnで指定した数式で計算した値をロジスティック関数によりクラス1確率に変換し、当該確率をもとにランダムにクラスを割り当てています。

d4 <- sim_logistic(
  num_samples = 1000,        # 生成するレコード数
  eqn = ~ 2 * A + B^2 + 1.2, # 2つの正規乱数AとBにより予測子を計算する算式
  #eqn = rlang::expr(2 * A + B^2 + 1.2),           # 参考:expressionで指定することも可能
  #eqn = base::expression(2 * A + B^2 + 1.2)[[1]], # 参考:expression listは指定できないため注意
  correlation = 0,           # 変数AとBの相関係数(デフォルトは0)
  keep_truth = TRUE          # クラス1確率の出力有無(デフォルトはFALSE)
)

str(d4)
tibble [1,000 × 5] (S3: tbl_df/tbl/data.frame)
 $ A           : num [1:1000] 0.104 1.375 -2.597 0.526 -1.029 ...
 $ B           : num [1:1000] -0.858 -1.359 0.397 0.504 1.75 ...
 $ .linear_pred: num [1:1000] 2.15 5.8 -3.84 2.5 2.21 ...
 $ .truth      : num [1:1000] 0.8953 0.997 0.0211 0.9245 0.9008 ...
 $ class       : Factor w/ 2 levels "one","two": 1 1 2 1 1 1 1 2 1 1 ...
# クラス確率が指定した式に従って算出されていることの確認
p <- 1 / (1 + exp(-(2*d4$A + d4$B^2 + 1.2)))
head(data.frame(list(
  .truth = d4$.truth,
  check = p
)))
     .truth     check
1 0.8952554 0.8952554
2 0.9969767 0.9969767
3 0.0211242 0.0211242
4 0.9244752 0.9244752
5 0.9008286 0.9008286
6 0.9437250 0.9437250

sim_multinomial関数は、3クラス分類用のデータを生成します。
説明変数はsim_logistic関数と同様、正規分布に従う乱数AとBの二つですが、AとBの算式として、三つのクラスに対応する三つの式eqn_1~eqn_3を指定します。 これら三つの式の算出結果を入力とするソフトマックス関数P(class=k)=exp(eqn\_k)/\Sigma_{i}{exp(eqn\_i)}により各クラスのクラス確率を計算し、当該確率をもとに、ランダムに3クラスのいずれかを割り当てています。

d5 <- sim_multinomial(
  num_samples = 10,      # 生成するレコード数
  eqn_1 = ~ A + B,       # クラス1に対応する式
  eqn_2 = ~ 2 * A * B,   # クラス2に対応する式
  eqn_3 = ~ log(abs(B)), # クラス3に対応する式
  correlation = 0,       # 変数AとBの相関係数(デフォルトは0)
  keep_truth = TRUE      # 各クラスのクラス確率の出力有無(デフォルトはFALSE)
)

str(d5)
tibble [10 × 6] (S3: tbl_df/tbl/data.frame)
 $ A           : num [1:10] -1.236 0.668 -1.119 0.173 0.375 ...
 $ B           : num [1:10] 0.184 1.404 0.44 0.216 -0.84 ...
 $ class       : Factor w/ 3 levels "one","two","three": 1 1 1 2 1 3 2 2 1 2
 $ .truth_one  : num [1:10] 0.299 0.5 0.384 0.533 0.314 ...
 $ .truth_two  : num [1:10] 0.543 0.411 0.283 0.389 0.266 ...
 $ .truth_three: num [1:10] 0.158 0.0885 0.3331 0.0779 0.4196 ...
# クラス確率が指定した式に従って算出されていることの確認

## 引数で指定した三つの算式
y1 <- d5$A + d5$B
y2 <- 2 * d5$A * d5$B
y3 <- log(abs(d5$B))

## ソフトマックス関数によるクラス確率
p1 <- exp(y1) / (exp(y1) + exp(y2) + exp(y3))
p2 <- exp(y2) / (exp(y1) + exp(y2) + exp(y3))
p3 <- exp(y3) / (exp(y1) + exp(y2) + exp(y3))

## パッケージによる計算結果と比較
head(data.frame(list(
  .truth_one = d5$.truth_one,
  check_one = p1,
  .truth_two = d5$.truth_two,
  check_two = p2,
  .truth_three = d5$.truth_three,
  check_three = p3
)))
  .truth_one check_one .truth_two check_two .truth_three check_three
1  0.2991672 0.2991672  0.5428603 0.5428603   0.15797249  0.15797249
2  0.5003462 0.5003462  0.4111912 0.4111912   0.08846260  0.08846260
3  0.3839573 0.3839573  0.2829503 0.2829503   0.33309237  0.33309237
4  0.5328413 0.5328413  0.3892420 0.3892420   0.07791673  0.07791673
5  0.3140786 0.3140786  0.2662960 0.2662960   0.41962537  0.41962537
6  0.5666486 0.5666486  0.3759692 0.3759692   0.05738220  0.05738220

参考資料

[1] Kuhn et al., (2020). Tidymodels: a collection of packages for modeling and machine learning using tidyverse principles. https://www.tidymodels.org.
[2] Kuhn M (2024). modeldata: Data Sets Useful for Modeling Examples. R package version 1.4.0, https://github.com/tidymodels/modeldata, https://modeldata.tidymodels.org.
[3] Kuhn M (2019). The caret Package.