R处的阈值处的整数

我试图进行逻辑回归,并且达到了每次观察都有可能性的地步。 现在我想给出一个阈值的概率分为0或1

例如,如果我有两个数字0.65和0.87,并且我的阈值为0.7,我想将0.65舍入到0和0.87到1。

为了实现这一点,我尝试了下面的代码,我认为这对于这样一个简单的任务来说太多了,我想知道是否有任何专用于执行此操作的功能。

library(tidyverse)

# create a table of probabilities and predictions (0 or 1)
df <- tibble(
  prob = runif(20),
  pred = round(prob) # threshold = 0.5
)

# threshold function for length = 1
threshold_1 <- function(p,t) {
  if (p > t) 1 else 0
}

# threshold function for length = p
threshold_p <- function(ps, t) {
  map2_dbl(ps, t, threshold_1)
}

# below works.
df %>% mutate(
  pred = threshold_p(df$prob, 0.7)
)

我也试过这个

# threshold = 0.7
df %>%
  mutate(
  pred = round(prob - 0.2) # threshold = 0.7
)

上面的工作非常好,因为没有概率会精确到0或1(只要我们正在处理分布函数),所以即使I +/- 0.5到数字(要更改阈值),它们也不会轮到-1或2.但它只是它不是很优雅。

我想知道是否有任何功能可以以更简单的方式执行此操作?


听起来像ifelse可以做你想要的东西?

library(dplyr)
df %>% 
  mutate(pred = ifelse(prob < 0.7, 0, 1))
链接地址: http://www.djcxy.com/p/24875.html

上一篇: Round numbers at a threshold value in R

下一篇: Converting fractions to decimals in an R vector