Foro de debate

Optimización - solnp

Optimización - solnp

de Ronald Miranda -
Número de respuestas: 0

Que tal?

Tengo los siguientes datos:

>newdatos

   Departamento Actividad   area elasticidad Ingresoxha    precio    costos  produccion lambda1       OP1       ALPHA1    LAMBDA2i1

1             1         1   5862   0.3052655   249.6103 3663.0000  553.3957    399.4582   72.02 0.1594879 1.001184e+02  -585.605890

2             1         2   3790   0.3053532   607.1605  271.1768  483.4507   8485.7499  185.61 0.1559047 2.348355e+03  -574.401512

3             1         3  12186   0.3054410  2226.0968  246.0000 1414.0000 110273.2320   75.53 0.1557844 2.546577e+04 -1142.738933

4             1         4   3442   0.3055287   873.5717 4558.9336   92.0000    659.5476   36.30 0.1555019 1.858940e+02     7.542038

5             1         5 107459   0.3056165   142.6272 1558.0083   93.0000   9837.2869   36.30 0.8981847 2.977762e-01    -1.194445

6             1         6   1459   0.3057043  1080.0976  410.0000  926.2996   3843.5669   81.39 0.1550390 1.242175e+03  -840.232421

7             2         1  15084   0.3057920   249.6103 3663.0000  553.3957   1027.8792   72.02 0.2388242 1.032788e+02  -565.802721

8             2         2   1031   0.3058798   433.6256  227.7168  498.3463   1963.2633  185.61 0.2344137 3.860374e+02  -582.308481

9             2         3   6297   0.3059675  2226.0968  246.0000 1414.0000  56982.6475   75.53 0.2344997 7.325660e+03  -967.510900

10            2         4  80409   0.3060553   873.5717 4558.9336   92.0000  15407.7760   36.30 0.2414303 1.007978e+03    82.606664

11            2         5 255026   0.3061430   142.5132 1556.7632   93.0000  23346.2431   36.30 0.8218663 8.408677e-01   -12.173206

12            2         6    906   0.3062308  1080.0976  410.0000  575.2073   2386.7523   81.39 0.2345015 4.834553e+02  -403.312795

#########################

#Y me genera un problema de este tipo 

In .safefunx(tmpv, .solnp_fun, .env, ...) : 



solnp-->warning: NaN detected in function call...check your function

#cuando aplico:

MP<-function(newdatos1,j){

  filtronewdatos<-newdatos1[newdatos1[,1]==j,]

  filtronewdatos

    # Re-nombro las variables

  dptonew<-filtronewdatos[,1]      # j departamentos

  actnew<-filtronewdatos[,2]       # i actividades 

  xnew<-filtronewdatos[,3]         # superficie en ha de la actividad i

  etanew<-filtronewdatos[,4]       # elasticidad de oferta (exógena)

  ingresosnew<-filtronewdatos[,5]  # revenue<-price*output  #output (kg) <-rendimiento (kg/ha) * x (ha)

  pricenew<-filtronewdatos[,6]     # precio internacional

  cinew<-filtronewdatos[,7]        # costo unitario por ha

  qnew<-filtronewdatos[,8]         # producción    

  lambda1new<-filtronewdatos[,9]   # Precio sombra de la tierra = precio de la renta de la tierra por ha

  deltas<-filtronewdatos[,10] 

  alpha<-filtronewdatos[,11] 

  lambda2<-filtronewdatos[,12] 

    lamb1i<-lambda1new                # precio sombra - precio de arrendamiento de la tierra

   

  np1<-cbind(pricenew,alpha,deltas,cinew,lambda2,lamb1i,xnew)

    #Función objetivo

  prof1<-function(area0,np=np1){

    areaX<-area0

    -(sum(np1[,1]*np1[,2]*(areaX^np1[,3])-(np1[,4]+np1[,5])*areaX))

   }

    #Restricción

  eqn1<-function(area0,L=sum(np1[,7])){(sum(area0)-L)}

    par0<-c(np1[,7]-np1[,7]+100) # valor de los parámetros iniciales para comenzar a optimizar

    Mx1<-solnp(par0,prof1,eqfun = eqn1,eqB = c(0),LB=NULL,UB=NULL,control = list(maxit=1000,tol=1e-10))

  return(Mx1$pars)

}

###########################################################################################

# Aplicación de la función "MP" de maximización del problema

 land<-list()

for(j in 1:2){

  land[[j]]<-MP(newdatos,j) # utilizo la base "newdatos" y j es la región que varia 

 }

land  

# me determina los valores de land pero no son los originales que debería replicar además de tirarme ese error previamente señalado