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