簡體   English   中英

在 R 中創建一個綁定指數列

[英]Create a Bound Exponential Column in R

如何在 2022 年和 2040 年之間的數據框中創建指數百分比列,該列受范圍 1% 和 x% 的約束,我可以在其中設置指數方程的“峰值”?

在下面的預期結果表中,百分比開始增加 1%,然后是 2%……然后在 25%-35% 之間以 5% 的增長率“達到頂峰”,然后回落到 2-3% 的增長率.

這是我想要完成的一個例子:

結果示例

end_growth_rate <- 48

2022    1%
2023    2%
2024    3%
2025    4%
2026    6%
2027    8%
2028    10%
2029    12%
2030    15%
2031    18%
2032    21%
2033    25%
2034    30%
2035    35%
2036    39%
2037    42%
2038    44%
2039    46%
2040    48%

非常感謝您的幫助! 非常感激! 如果需要澄清,很樂意解釋更多。

您將某些內容放入data.tabledata.frame似乎無關緊要。 您所要求的只是開始、結束和曲線類型的函數。 這可能是一個sigmoid 函數(又名“邏輯函數”)。

嘗試這個:

mysigmoid <- function(n, min, max, maxe = 4, mine = -maxe) {
  y <- 1 / (1 + exp(-seq(mine, maxe, len = max(0, n))))
  min + (max - min) * (y - y[1]) / (y[n] - y[1])
}

您需要使用兩個指數端點( maxemine ,它們對應於上面 sigmoid 鏈接中指數方程中使用的左/右x值)以獲得完美的傳播。 使用“-3 到 2”,我可以得到“以 1% 開始,以 1.9% 結束”,這似乎與您傳達的意圖很接近。

round(mysigmoid(19, 1, 49, 2, -3), 1)
#  [1]  1.0  1.8  2.9  4.2  5.8  7.9 10.3 13.1 16.4 20.0 23.9 27.9 31.8 35.6 39.1
# [16] 42.2 44.9 47.1 49.0
round(diff(mysigmoid(19, 1, 49, 2, -3)), 1)
#  [1] 0.8 1.0 1.3 1.6 2.0 2.4 2.9 3.3 3.6 3.9 4.0 4.0 3.8 3.5 3.1 2.7 2.3 1.9

(然后只需將它們分配給您選擇的框架或表格列。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM