我有一个值为 0-100 的向量。
values <- runif(n = 1000, min = 0, max = 100)
我想将这些值转换为下凹抛物线曲线,其中中间值(大约 50)将具有新的最大值(100),而低值(0)和高值(100)将为 0 .绘制我的原始向量与新向量基本上如下图所示。关于如何在 R 中编写这个方程有什么建议吗?
一点代数给出了一个通过点 (0, 0)、(50, 100) 和 (100, 0) 的二次方程(不是抛物线),即 -((x-50)^2)/25 + 100.
也是如此
library(tidyverse) set.seed(123) tibble( value = runif(n = 1000, min = 0, max = 100), new_value = -((value - 50)^2/25) + 100 ) %>% ggplot() + geom_line(aes(x = value, y = new_value))
给你你想要的?
有这样的事吗?
library(tidyverse) df <- data.frame(n=seq(1,1000)) df$v_old <- sort(runif(1000,min=0,max=100)) df$v_new <- -1/50*(df$v_old - 50) ^ 2 + 50 df %>% ggplot(aes(x=v_old,y=v_new)) + geom_line()