You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中求解ROI最大化对应的spend与revenue精确值

精确求解ROI最大值的方法

一、解析解推导

已知收益函数和ROI定义,先将ROI表达式简化:

ROI(s) = calculate_abc_revenue(a0, b0, c0, s) / s = a0 / (s * (1 + b0*s^c0))

由于c0是负数,令c1 = -c0(此时c1>0),则s^c0 = 1/s^c1,代入后ROI可改写为:

ROI(s) = a0 / (s + b0*s^(1 - c1))

要最大化ROI,对s求导并令导数为0。聚焦分母g(s) = s + b0*s^k(其中k = 1 + c0),求导得:

g’(s) = 1 + b0*k*s^(k-1)

令g’(s)=0,解出最优投入s_opt的解析公式:

s_opt = ( -1/(b0*k) )^( 1/(k-1) )

代入k=1+c0、k-1=c0,最终简化为:

s_opt = ( -1/(b0*(1 + c0)) )^( 1/c0 )

二、R语言实现

1. 直接计算解析解

代入给定常量计算精确值:

a0 <- 1303066.36937866
b0 <- 15560519.9999999
c0 <- -1.09001859302511

# 计算最优投入
k <- 1 + c0
s_opt <- ( -1/(b0 * k) )^( 1/c0 )

# 计算对应收益和ROI
revenue_opt <- calculate_abc_revenue(a = a0, b = b0, c = c0, spend = s_opt)
roi_opt <- revenue_opt / s_opt

cat("最优投入:", round(s_opt, 4), "\n")
cat("对应收益:", round(revenue_opt, 2), "\n")
cat("最大ROI:", round(roi_opt, 4), "\n")

2. 用一维优化函数验证

R的optimize()函数专为单峰函数极值设计,效率极高且能保证全局最优(此问题中ROI函数是单峰的,存在唯一最大值):

# 定义ROI目标函数
roi_func <- function(s) {
  rev <- calculate_abc_revenue(a0, b0, c0, s)
  rev / s
}

# 设定投入范围(可根据实际场景调整)
opt_result <- optimize(roi_func, interval = c(1, 1e6), maximum = TRUE)

cat("优化得到的最优投入:", round(opt_result$maximum, 4), "\n")
cat("最大ROI:", round(opt_result$objective, 4), "\n")
cat("对应收益:", round(calculate_abc_revenue(a0, b0, c0, opt_result$maximum), 2), "\n")

优势说明

  • 解析解一步到位,无需迭代,结果绝对精确;
  • optimize()函数计算量极小,远优于生成大量spend向量的方法,且能确保找到全局最大值;
  • 两种方法结果完全一致,可互相验证。

内容的提问来源于stack exchange,提问作者GNicoletti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 19:35:15