I'm trying to figure out how to plot basic utility maximization results with
R, Ideally I'd like to plot the value of u through x1,x2 space, so you can
graph income / substitution effects easily...
also, it'd be nice if I could put a linear budget constraint on the graph
here's an example with cobb douglas utility
u <- function(x) {
x1 <- x[1]
x2 <- x[2]
(x1^alpha)*(x2^(1-alpha))
}
utility <- function(x) x[1]^(alpha)*x[2]^(1-alpha)
p <- c(2,1)
i <- -100
alpha <- .3
umax <- function(p,i,u) {
res <- constrOptim(c(.5,.5), u, grad=NULL, ui=-p, ci=i, mu = 1e-04,
control=list(fnscale=-1))
return(res)
}
curve(umax, c(c(2,1),c(2,1)), c(10,100))
--
View this message in context:
http://r.789695.n4.nabble.com/R-optimization-and-curve-tp2992244p2992244.html
Sent from the R help mailing list archive at Nabble.com.
On Wed, 13 Oct 2010, jcress410 wrote:> u <- function(x) { > ? ? x1 <- x[1] > ? ? x2 <- x[2] > ?(x1^alpha)*(x2^(1-alpha)) > } > utility <- function(x) x[1]^(alpha)*x[2]^(1-alpha) > p <- c(2,1) > i <- -100 > alpha <- .3 > umax <- function(p,i,u) { > res <- constrOptim(c(.5,.5), u, grad=NULL, ui=-p, ci=i, mu = 1e-04, > control=list(fnscale=-1)) > return(res) > } > curve(umax, c(c(2,1),c(2,1)), c(10,100))I don't see any question here. However you must RTFM. 1) The returned value of umax() is a list. How do you expect curve() to plot a list? 2) curve() requires that the function umax() must be vectorisable wrt its first parameter, i.e. you pass it a numeric vector and it returns a numeric vector of the same length. 3) you have to realise that curve() will only graph a 1-dimensional function HTH, Ray