1

logitcar-package からの変換を使用して、データセットからいくつかの値を変換しました。変数「var」はこれらの値を表し、パーセンテージ値で構成されます。

ただし、inv.logitブート パッケージから変換して戻すと、値が元の値と一致しなくなります。

data$var
46.4, 69.5, 82.7, 61.7, 76.4, 84.8, 69.1

data["var_logit"] <- logit(data$var, percents=TRUE)

data$var_logit
-0.137013943, 0.778005062, 1.454239241, 0.452148763, 1.102883518, 1.589885549, 0.760443432

data$var_logback <- inv.logit(data$var_logit)
0.46580 0.68525 0.81065 0.61115 0.75080 0.83060 0.68145

前の値 (または少なくともいくつかの非常に類似した値) を取得するには、結果に 100 を掛ける必要があるように見えますが、何かが足りないように感じます。

助けてくれてありがとう!

4

2 に答える 2

4

ここで行われているもう 1 つのことは、car::logit値が 0 または 1 の場合にデータを自動的に調整することです。

調整: 0 または 1 の割合を避けるための調整係数。データにそのような比率がない場合はデフォルトで「0」になり、ある場合は「.025」になります。

library(car)
dat <- c(46.4, 69.5, 82.7, 61.7, 76.4, 84.8, 69.1)
(L1 <- logit(dat, percents=TRUE))
## [1] -0.1442496  0.8236001  1.5645131
##      0.4768340  1.1747360  1.7190001  0.8047985
(L2 <- logit(c(dat,0),percents=TRUE))
## [1] -0.1370139  0.7780051  1.4542392  0.4521488
##      1.1028835  1.5898855  0.7604434 -3.6635616
## Warning message:
## In logit(c(0, dat)) : proportions remapped to (0.025, 0.975)

これは、結果を簡単に反転できないことを意味します。

結果を反転する関数を次に示します (car::inv.logit私は代数を行うのが面倒だったので、Wolfram Alpha の助けを借りての内臓を使用します)。

inv.logit <- function(f,a) {
   a <- (1-2*a)
   (a*(1+exp(f))+(exp(f)-1))/(2*a*(1+exp(f)))
}
zapsmall(inv.logit(L2,a=0.025)*100)
## [1] 46.4 69.5 82.7 61.7 76.4 84.8 69.1  0.0
于 2014-05-24T13:22:39.943 に答える
3

値を 100 で割るフラグを設定しpercents=TRUEますが、inverse コマンドはそれを認識しません。

于 2014-05-24T12:57:56.917 に答える