https://stat.ethz.ch/mailman/listinfo/r-help-es
O por correo electrónico, enviando un mensaje con el texto "help" en
el asunto (subject) o en el cuerpo a:
r-help-es-request en r-project.org
Puede contactar con el responsable de la lista escribiendo a:
r-help-es-owner en r-project.org
Si responde a algún contenido de este mensaje, por favor, edite la
linea del asunto (subject) para que el texto sea mas especifico que:
"Re: Contents of R-help-es digest...". Además, por favor, incluya en
la respuesta sólo aquellas partes del mensaje a las que está
respondiendo.
Asuntos del dÃa:
1. Paquetes en R de programación lineal con muchas restricciones
(Alex J. Zambrano)
----------------------------------------------------------------------
Message: 1
Date: Sat, 25 Apr 2015 06:22:58 -0500
From: "Alex J. Zambrano" <alexjzc en gmail.com>
To: r-help-es en r-project.org
Subject: [R-es] Paquetes en R de programación lineal con muchas
restricciones
Message-ID:
<CAJS8D_UaXUn7V4OwK60_0DDcNuVvk=
PH2kVTC2cf+LdNrO9+cA en mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"
Hola a tod en s.
Quisiera saber si conocen algún paquete además de boot que permita realizar
programación lineal con muchas restricciones. A continuación escribo el
codigo que estoy utilizando
rm(list = ls())
#Función para generar las variables independientes
gen<-function(n,a=0,b=1){
X<-matrix(0,ncol=3,nrow=n)
#Muestras distribuidas entre -1 y 1 cuyo radio sea menor que 1
for(i in 1:n){
m<-0
while(m==0){
U<-runif(3,min=-1,max=1)
R<-t(U)%*%U
if(R<=1){
X[i,]<-U/sqrt(R)
m<-1
}
}
}
#Transformación de muestras según la matriz correlación
V<-diag(rep(sqrt(1/3),3))
C=matrix(c(1,0.03,-0.06,0.03,1,-0.28,-0.06,-0.28,1),ncol=3)#Matriz de
correlación
S<-V%*%C%*%V
B<-chol(solve(S))
Z<-X%*%t(solve(B))
#Transformación de muestras para rango 0 y 1
Y<-(Z-min(Z))/(max(Z)-min(Z))
#Transformación de muestras entre a y b
Y<-(b-a)*Y+a
return(Y)
}
set.seed(25042015)
#Prueba
X<-gen(10000,a=-10,b=10)
summary(X)
cor(X)
#Caso laplace
library(VGAM)#Se debe cargar está librerÃa independiente del boot (genera
problemas)
X<-gen(20,-10,10)
e<-rlaplace(20,location=0,scale=1)
Yest<-16+4*X[,1]+X[,2]+0.25*X[,3] # Valores a estimar 4, 1, 0.25
Y<-Yest+e
n<-length(Y)
p<-dim(X)[2]
r<-n*(n-1)/2
H<-cbind(rep(1,n-1),-diag(1,n-1))
for(i in 1:(n-2)){
h<-cbind(matrix(0,n-1-i,i),rep(1,n-1-i),-diag(1,n-1-i))
H<-rbind(H,h)
}
library(boot) # LibrerÃa de programación
#MINSADBED
a<-c(rep(0,p),rep(0,n),rep(1,r),rep(1,r))
A31<-cbind(X,diag(1,n),matrix(0,n,r),matrix(0,n,r))
A32<-cbind(matrix(0,r,p),H,-diag(r),diag(r))
A3<-rbind(A31,A32)
b3<-c(Y,matrix(0,r,1))
simplex(a,A3=A3,b3=b3)
#MINSADBAD
a<-c(rep(0,p),rep(0,n),rep(1,r),rep(1,r))
A31<-cbind(X,diag(1,n),matrix(0,n,r),matrix(0,n,r))
A32<-cbind(-X,diag(1,n),matrix(0,n,r),matrix(0,n,r))
A33<-cbind(matrix(0,r,p),H,diag(r),-diag(r))
A3<-rbind(A31,A32,A33)
b3<-c(Y,-Y,matrix(0,r,1))
simplex(a,A3=A3,b3=b3)
La idea es estimar unos parámetros de un modelo de regresión, utilizando
métodos de programación. La matriz X tiene cierta estructura de
correlación, y los errores en el modelo son no normales.
Al realizar la solución por MINSADBED con la función simplex del paquete
boot, me arroja las estimaciones de Beta_1, Beta_2 y Beta_3 se encuentran
en la solución optima de los primeros tres valores. Pero noten que se tiene
una matriz de restricciones demasiado grande.
Al realizar la solución por MINSADBAD las estimaciones de Beta_1, Beta_2 y
Beta_3 no se logran obtener debido a que es una solución no factible.
Al realizar está misma en paquete de programación winqsb la solución si
logra obtener, pero construir esa matriz de restricciones es demasiado
engorroso y más aún si de desea realizar un proceso de simulación.
Agradezco me puedan ayudar.
Saludos.
--
Alex Johann Zambrano Carbonell
http://experienceinstatistics.blogspot.com/
[[alternative HTML version deleted]]
------------------------------
Subject: Pié de página del digest
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es
------------------------------
Fin de Resumen de R-help-es, Vol 74, EnvÃo 40
*********************************************