即使阅读了一些基本的示例和文档,我也无法理解R中的solve
命令。
假设我有以下公式描述经济增长率:
Y = K^α * (AL)^1−α
设为α= 1/3。让我们读一个虚拟数据框
data <- read.table(text = "
Economy Year y k L
A 1960 100 1 1000
A 2000 1350 27 2000
B 1960 20 2 4000
B 2000 1350 54 8000
", header = TRUE)
现在,我如何使用solve
命令(或更合适的东西)计算每一行中“A”的值?这样的事情显然不起作用:
with(data, solve(y, k^(1/3), L^(2/3))
答案 0 :(得分:1)
我使用了ompr
优化建模包。您需要重新排列等式以使其有效。
library(ROI)
library(ROI.plugin.glpk)
library(ompr)
library(ompr.roi)
library(dplyr)
f <- function(y, k, L, alpha){
MIPModel() %>%
add_variable(A) %>%
set_objective(0) %>%
add_constraint((((y/(k^alpha))^(1/((1-alpha))))/L) == A) %>%
solve_model(with_ROI(solver = "glpk")) %>%
get_solution(A)
}
apply(data[,3:5], 1, function(x) f(y=x['y'],k=x['k'],L=x['L'], alpha=0.3))
#[1] 0.71968567 0.35984284 0.17992142 0.08996071
apply(data[,3:5], 1, function(x) f(y=x['y'],k=x['k'],L=x['L'], alpha=1/3))
#[1] 1.00000000 4.77297077 0.01581139 0.84375000
这可能对这个例子来说太过分了。但是可扩展。