おそらくWeb上に記載されているコードをそのままコピペして使われたのだろうと思いますが、そのコードの中に不適切な文字が使用されているためにエラーが起きています。
具体的には、普通のハイフン(U+002D)が別のハイフン(U+2010)に置き換わっています。
このようなちょっとした文字違いや表示されない制御文字などがエラーの原因になることがあるので、Web上にあるコードなどを利用する場合には注意が必要です。
また提示されているコード内で使用されている関数 lrm() を使用するために rms というライブラリを読み込む必要があろうかと思います。
こちらのコードを試して確認してみて下さい。
R
1library(rms)
2
3approximate_R2 <- function(auc, prev, n = 1000000){
4mu <- sqrt(2) * qnorm(auc)
5LP <- c(rnorm(prev*n, mean=0, sd=1), rnorm((1-prev)*n, mean=mu, sd=1))
6y <- c(rep(0, prev*n), rep(1, (1-prev)*n))
7fit <- lrm(y ~LP)
8max_R2 <- function(prev){
91-(prev^prev*(1-prev)^(1-prev))^2
10}
11return(list(R2.nagelkerke = as.numeric(fit$stats['R2']),
12R2.coxsnell = as.numeric(fit$stats['R2']) * max_R2(prev)))
13}
14
15set.seed(1234)
16approximate_R2(auc = 0.81, prev = 0.77, n=1000000)
17
18
19# $R2.nagelkerke
20# [1] 0.3183689
21
22# $R2.coxsnell
23# [1] 0.2100957
24
25
A note on estimating the Cox‐Snell R2 from a reported C statistic (AUROC) to inform sample size calculations for developing a prediction model with a binary outcome
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/23 04:56