您如何使用您制作的函数来计算将输入更改 1% 对输出的影响百分比?[已结束]

How do you use a function you have made to calculate the % effect on the output of changing the input by 1%? [closed]

提问人:Victor Nielsen 提问时间:5/31/2023 最后编辑:Victor Nielsen 更新时间:5/31/2023 访问量:35

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

6个月前关闭。

如果函数是非线性的,则应该有一个计算百分比的起始值。

x <- -2
get_y <- function(x) {
  y <- xˆ2
}
get_z <- function(x) {
  z <- get_y(x) * x
}
get_result <- function(x) {
  get_z(x)
}

我想得到一个值,该值表示如果我们将 x 从 -2 更改为 1%,z 会发生什么(以 % 为单位)。

我需要做什么才能得到它?get_result(x)

奖励:如何从这些值创建 x 和 z 值的数据帧?

R 函数 嵌套 百分比 弹性

评论

1赞 jpsmith 5/31/2023
这是非常不清楚的。你的第二个函数()应该是from吗?如果是这样,则只需 = 。但是,如果您正在查看 的百分比变化,为什么您甚至需要计算呢?你能澄清一下你要做什么并添加预期的输出吗?yget_zyget_yzz <- x ^ 2 * xz <- x * 3yz
0赞 Victor Nielsen 5/31/2023
所以我写错了一件事,我现在在文本中纠正了它。你是对的,我可以做,但这只是一个例子。在我的实际代码中,将其拆分为两个函数很有用。我可能以一种奇怪的方式写了一些东西,但要点是我想看看如果我将 x 更改 1%,z 会发生什么(以 % 为单位)。z <- x ^ 2 * x
0赞 Victor Nielsen 5/31/2023
@jpsmith我还使代码更加直观。

答:

1赞 bouncyball 5/31/2023 #1

这应该有效。每个函数都需要返回一些东西,如果你将 x 更改为get_resultpct_change

get_y <- function(x) {
  x ^ 2
}

get_z <- function(x) {
  get_y(x) * x
}
get_result <- function(x, pct_change = 0.01) {
  z_orig <- get_z(x)
  z_new <- get_z((1 + pct_change)*x)
  
  (z_new - z_orig)/z_orig
  
}

get_result_df <- function(x, pct_change){
  
  data.frame(x = x,
             z = get_z(x),
             x_pct_change = pct_change,
             z_pct_change = get_result(x, pct_change))
  
}

下面是一个示例:

get_result_df(x = -2, pct_change = 0.01)
#    x  z x_pct_change z_pct_change
# 1 -2 -8         0.01     0.030301