package <U+393C><U+3E31>rsm<U+393C><U+3E32> was built under R version 3.5.3
Attaching package: <U+393C><U+3E31>rsm<U+393C><U+3E32>
The following objects are masked from <U+393C><U+3E31>package:qualityTools<U+393C><U+3E32>:
cube, star
dada la funcion \(\hat{y}=72.0+3.6x_1 - 2.5x_2\)
Problema a) grafique
Definimos nuestra funcion f_plano51 que haremos plot
f_plano51 <- function(x1, x2)
{
y=72.0+(3.6*x1) - (2.5*x2)
return(y)
}
la funcion Outer produce un producto carteciano del los valores indicados contruyendo una matriz
p.x1 <- p.x2 <- seq(-12, 12, length= 50)
p.y <- outer(p.x1, p.x2, f_plano51)
str(p.y)
num [1:50, 1:50] 58.8 60.6 62.3 64.1 65.9 ...
par(bg = "slategray")
persp(p.x1, p.x2, p.y,
main="Perspective Plot of a Cone",
zlab = "y",
theta = 30, phi = 15,
col = "springgreen", shade = 0.5
,ticktype = "detailed"
)
Problema b) calcular el path del ascent generado utilizando $=1 $
Basado en RSM https://www.rdocumentation.org/packages/rsm/versions/2.10/topics/rsm
Utilizando Ave para crear el producto del par ordenado y SRM Construimos el path y el contorno
p.res=c()
for (i in 1:50){
for (j in 1:50){
p.res<-rbind( p.res,c( p.x1[i]*3.6, - 2.5*p.x1[j], 72.0 , p.y[i,j] ))
}
}
df <- data.frame(p.res)
names(df) <- c('x1', 'x2', 'b', 'y')
df
heli.rsm = rsm (y ~ b+FO( x1 , x2), data = df)
steepest(heli.rsm)
Path of steepest ascent from ridge analysis:
prediction from a rank-deficient fit may be misleading
Visualizamos el contorno
contour(heli.rsm, ~FO(x1, x2), image=TRUE, at=summary(heli.rsm$canonical$xs))
prediction from a rank-deficient fit may be misleading
dada la funcion \(\hat{y}=25+4x_1 + 3x_2-2.5x_3\) deseamos maximizar la resupesta
Basandonos en la libreria de QualityTools https://rdrr.io/cran/qualityTools/man/steepAscent.html
Definimos nuestro modelo de factorial de cubo
configuracion <- facDesign(k=3, p = 0, replicates = 1, blocks = 1, centerCube = 0)
implicit list embedding of S4 objects is deprecatedimplicit list embedding of S4 objects is deprecatedimplicit list embedding of S4 objects is deprecated
definimos entonces nuestro data frame basado en el set que acabamos de construir
df <- as.data.frame(configuracion)
df
definimos la Y hat y asignamos la respuesta esto nos dara el resultado de la iteracion del Data frame
yfactor<-25+4*df$A+3*df$B-2.5*df$C
response(configuracion) <- yfactor
summary(configuracion)
Information about the factors:
-----------
verificaremos la estructura, vemos que la collection contiene el listado de factores
str(configuracion)
Formal class 'facDesign' [package "qualityTools"] with 15 slots
..@ name : chr(0)
..@ factors :List of 3
.. ..$ A:Formal class 'doeFactor' [package "qualityTools"] with 5 slots
.. .. .. ..@ low : num -1
.. .. .. ..@ high: num 1
.. .. .. ..@ name: chr ""
.. .. .. ..@ unit: chr ""
.. .. .. ..@ type: chr "numeric"
.. ..$ B:Formal class 'doeFactor' [package "qualityTools"] with 5 slots
.. .. .. ..@ low : num -1
.. .. .. ..@ high: num 1
.. .. .. ..@ name: chr ""
.. .. .. ..@ unit: chr ""
.. .. .. ..@ type: chr "numeric"
.. ..$ C:Formal class 'doeFactor' [package "qualityTools"] with 5 slots
.. .. .. ..@ low : num -1
.. .. .. ..@ high: num 1
.. .. .. ..@ name: chr ""
.. .. .. ..@ unit: chr ""
.. .. .. ..@ type: chr "numeric"
..@ cube :'data.frame': 8 obs. of 3 variables:
.. ..$ A: num [1:8] -1 1 -1 1 -1 1 -1 1
.. ..$ B: num [1:8] -1 -1 1 1 -1 -1 1 1
.. ..$ C: num [1:8] -1 -1 -1 -1 1 1 1 1
..@ star :'data.frame': 0 obs. of 0 variables
Formal class 'data.frame' [package "methods"] with 4 slots
.. .. ..@ .Data : list()
.. .. ..@ names : chr(0)
.. .. ..@ row.names: int(0)
.. .. ..@ .S3Class : chr "data.frame"
..@ centerCube :'data.frame': 0 obs. of 0 variables
Formal class 'data.frame' [package "methods"] with 4 slots
.. .. ..@ .Data : list()
.. .. ..@ names : chr(0)
.. .. ..@ row.names: int(0)
.. .. ..@ .S3Class : chr "data.frame"
..@ centerStar :'data.frame': 0 obs. of 0 variables
Formal class 'data.frame' [package "methods"] with 4 slots
.. .. ..@ .Data : list()
.. .. ..@ names : chr(0)
.. .. ..@ row.names: int(0)
.. .. ..@ .S3Class : chr "data.frame"
..@ generator : NULL
..@ response :'data.frame': 8 obs. of 1 variable:
.. ..$ yfactor: num [1:8] 20.5 28.5 26.5 34.5 15.5 23.5 21.5 29.5
..@ block :'data.frame': 8 obs. of 1 variable:
.. ..$ Block: num [1:8] 1 1 1 1 1 1 1 1
..@ blockGen :'data.frame': 0 obs. of 0 variables
Formal class 'data.frame' [package "methods"] with 4 slots
.. .. ..@ .Data : list()
.. .. ..@ names : chr(0)
.. .. ..@ row.names: int(0)
.. .. ..@ .S3Class : chr "data.frame"
..@ runOrder :'data.frame': 8 obs. of 1 variable:
.. ..$ RunOrder: int [1:8] 8 3 2 1 4 5 6 7
..@ standardOrder:'data.frame': 8 obs. of 1 variable:
.. ..$ StandOrder: int [1:8] 1 2 3 4 5 6 7 8
..@ desireVal : list()
..@ desirability : list()
..@ fits : list()
configuracion@factors
$`A`
Name:
low Setting: -1
high setting: 1
Unit:
type: numeric
$B
Name:
low Setting: -1
high setting: 1
Unit:
type: numeric
$C
Name:
low Setting: -1
high setting: 1
Unit:
type: numeric
Operamos el ascent
tabla = steepAscent(c("A","B","C"), response = "yfactor", size = 1,data = configuracion)
Steepest Ascent for configuracion
df_tabla_real <- as.data.frame(tabla)
df_tabla_real
y_predicho <- 25+4*df_tabla_real$A.real+3*df_tabla_real$B.real-2.5*df_tabla_real$C.real
response(tabla) <- y_predicho
tabla
plot(tabla)
reconsideramndo el modelo del primer problema defina el path con un delta de 1 para x2
problema a y B) Grafique el path En esta ocacion utilizaremos el metodo de factorial del escenario anterior con el primer modelo los pasos son los siguiente 1. crear el modelo de factores 2. asignar el data set 3. escribir la funcion 4.1 construimos la tabla de steepent ascent para AB 4.2 construimos la tabla de steepent ascent para BA 5.1 construiremos la data con informacion real contra el estimado del steepest ascent AB con size 1 5.2 construiremos la data con informacion real contra el estimado del steepest ascent BA con size 1 6.1 Construimos los y predicho con los valores reales AB 6.2 Construimos los y predicho con los valores reales BA 7.1 generamos el plot con respoecto a BA (en Azul) 7.1 generamos el plot con respoecto a AB (en rojo)
configuracion <- facDesign(k=2)
implicit list embedding of S4 objects is deprecatedimplicit list embedding of S4 objects is deprecated
df <- as.data.frame(configuracion)
yfactor<-72+3.6*df$A-2.5*df$B
response(configuracion) <- yfactor
tablaAB = steepAscent(c("A","B"), response = "yfactor", size = 1,data = configuracion)
Steepest Ascent for configuracion
tablaBA = steepAscent(c("B","A"), response = "yfactor", size = 1,data = configuracion)
Steepest Ascent for configuracion
df_tabla_realAB <- as.data.frame(tablaAB)
df_tabla_realBA <- as.data.frame(tablaBA)
y_predichoAB <- 72+3.6*df_tabla_realAB$A.real-2.5*df_tabla_realAB$B.real
y_predichoBA <- 72+3.6*df_tabla_realBA$A.real-2.5*df_tabla_realBA$B.real
response(tablaAB) <- y_predichoAB
response(tablaBA) <- y_predichoBA
tablaBA
df_BA <- as.data.frame(tablaBA)
df_AB <- as.data.frame(tablaAB)
plot(tablaBA)+ lines(df_BA$Delta,df_BA$y_predichoBA, col="blue" )+lines(df_AB$Delta,df_AB$y_predichoAB, col="red", type='l') +
lines(df_BA$Delta,df_BA$y_predichoBA, col="blue", type='h' )
integer(0)
Como podemos ver en las lineas los “Y” predichos de BA estan creciendo mucho mas rapido para un size=1 en ambos casos
Basados en el ejercicio 5.2 ## Problema a) muestre que tando se separa de la base y el delta es de 4 para AB en x1
configuracion <- facDesign(k=3, p = 0, replicates = 1, blocks = 1, centerCube = 1)
implicit list embedding of S4 objects is deprecatedimplicit list embedding of S4 objects is deprecatedimplicit list embedding of S4 objects is deprecated
df <- as.data.frame(configuracion)
yfactor<-25+4*df$A+3*df$B-2.5*df$C
response(configuracion) <- yfactor
tablaAB = steepAscent(c("A","B","C"), response = "yfactor", size = 1,data = configuracion)
Steepest Ascent for configuracion
tabla4delta = steepAscent(c("A","B","C"), response = "yfactor", size = 4,data = configuracion)
Steepest Ascent for configuracion
df_tabla_realAB <- as.data.frame(tablaAB)
df_tabla_real4delta <- as.data.frame(tabla4delta)
y_predichoAB <- 25+4*df_tabla_realAB$A.real+3*df_tabla_realAB$B.real-2.5*df_tabla_realAB$C.real
y_predicho4delta <- 25+4*df_tabla_real4delta$A.real+3*df_tabla_real4delta$B.real-2.5*df_tabla_real4delta$C.real
response(tablaAB) <- y_predichoAB
response(tabla4delta) <- y_predicho4delta
tabla4delta
df_AB <- as.data.frame(tablaAB)
df_4delta <- as.data.frame(tabla4delta)
plot(tabla4delta)+
lines(df_4delta$Delta,df_4delta$y_predicho4delta, col="blue" )+
lines(df_AB$Delta,df_AB$y_predichoAB, col="red", type='l')
integer(0)
lines(df_4delta$Delta,df_4delta$y_predicho4delta, col="blue", type='h' )
NA
como podemos ver la linea azul es el predicho por un delta de 4
recalcule considerendo ahora con x2 considerando 1delta y la base en 4delta
configuracion <- facDesign(k=3, p = 0, replicates = 1, blocks = 1, centerCube = 1)
implicit list embedding of S4 objects is deprecatedimplicit list embedding of S4 objects is deprecatedimplicit list embedding of S4 objects is deprecated
df <- as.data.frame(configuracion)
yfactor<-25+4*df$A+3*df$B-2.5*df$C
response(configuracion) <- yfactor
tablaAB = steepAscent(c("B","A","C"), response = "yfactor", size = 4,data = configuracion)
Steepest Ascent for configuracion
tabla4delta = steepAscent(c("B","A","C"), response = "yfactor", size = 1,data = configuracion)
Steepest Ascent for configuracion
df_tabla_realAB <- as.data.frame(tablaAB)
df_tabla_real4delta <- as.data.frame(tabla4delta)
y_predichoAB <- 25+4*df_tabla_realAB$A.real+3*df_tabla_realAB$B.real-2.5*df_tabla_realAB$C.real
y_predicho4delta <- 25+4*df_tabla_real4delta$A.real+3*df_tabla_real4delta$B.real-2.5*df_tabla_real4delta$C.real
response(tablaAB) <- y_predichoAB
response(tabla4delta) <- y_predicho4delta
tabla4delta
df_AB <- as.data.frame(tablaAB)
df_4delta <- as.data.frame(tabla4delta)
plot(tabla4delta)+
lines(df_4delta$Delta,df_4delta$y_predicho4delta, col="blue" )+
lines(df_AB$Delta,df_AB$y_predichoAB, col="red", type='l')
integer(0)
lines(df_4delta$Delta,df_4delta$y_predicho4delta, col="blue", type='h' )
NA
Como podemos observar aunque los dos metodos parten del mismo punto, la base con un delta de 4 crece mucho mas rapido
Primero construiremos el arreglo de respuestas diseñamos nuestro modelo de factor con k=4, y nuestro grid de productos ABCD y construimos el resultado basandonos en 2 a la 4 en nuestro diseño de factorial 4 efectos principales: a para el factorA, b para el factor B, c para el factor C y ?? para el factor D 6 efectos para las interacciones de orden 2, AB, AC, AD, BC, BD, CD 4 efectos para las interacciones de orden 3, ABC, ABD, BCD, ACD 1 efecto para la interacción de orden 4, ABCD
formula a utilizar y=a+b+c+d+ab+ac+ad+bc+bd+cd+abc+abd+acd+bcd+abcd
m=expand.grid(A=factor(c(-1,1)),B=factor(c(-1,1)),
C=factor(c(-1,1)),D=factor(c(-1,1)))
m
lecturas<-unlist(m)
mx2 <- rbind(m,m)
features <- matrix(lecturas,ncol=4,byrow=TRUE)
features <- rbind(features,features)
print("duplicamos los features puesto que son dos lecturas")
[1] "duplicamos los features puesto que son dos lecturas"
features
[,1] [,2] [,3] [,4]
[1,] "-1" "1" "-1" "1"
[2,] "-1" "1" "-1" "1"
[3,] "-1" "1" "-1" "1"
[4,] "-1" "1" "-1" "1"
[5,] "-1" "-1" "1" "1"
[6,] "-1" "-1" "1" "1"
[7,] "-1" "-1" "1" "1"
[8,] "-1" "-1" "1" "1"
[9,] "-1" "-1" "-1" "-1"
[10,] "1" "1" "1" "1"
[11,] "-1" "-1" "-1" "-1"
[12,] "1" "1" "1" "1"
[13,] "-1" "-1" "-1" "-1"
[14,] "-1" "-1" "-1" "-1"
[15,] "1" "1" "1" "1"
[16,] "1" "1" "1" "1"
[17,] "-1" "1" "-1" "1"
[18,] "-1" "1" "-1" "1"
[19,] "-1" "1" "-1" "1"
[20,] "-1" "1" "-1" "1"
[21,] "-1" "-1" "1" "1"
[22,] "-1" "-1" "1" "1"
[23,] "-1" "-1" "1" "1"
[24,] "-1" "-1" "1" "1"
[25,] "-1" "-1" "-1" "-1"
[26,] "1" "1" "1" "1"
[27,] "-1" "-1" "-1" "-1"
[28,] "1" "1" "1" "1"
[29,] "-1" "-1" "-1" "-1"
[30,] "-1" "-1" "-1" "-1"
[31,] "1" "1" "1" "1"
[32,] "1" "1" "1" "1"
observation <- c(30.3,28.5,24.5,25.9,24.8,26.9,24.8,22.2,31.7,24.6,27.6,26.3,29.9,26.8,26.4,26.9,28.6,31.4,25.6,27.2,23.4,23.8,27.8,24.9,33.5,26.2,30.6,27.8,27.7,24.2,24.9,29.3)
experiment <- tibble(A=mx2$A,
B=mx2$B,
C=mx2$C,
D=mx2$D,
Y=observation)
print("verificamos como queda el experimiento:")
[1] "verificamos como queda el experimiento:"
experiment
df2<-experiment[complete.cases(experiment),]
df2
fit<- lm(Y~A+B+C+D+(A*B)+(A*C)+(A*D)+(B*C)+(B*D)+(C*D)+(A*B*C)+(A*B*D)+(A*C*D)+(B*C*D)+(A*B*C*D),data=df2)
summary(fit)
Call:
lm(formula = Y ~ A + B + C + D + (A * B) + (A * C) + (A * D) +
(B * C) + (B * D) + (C * D) + (A * B * C) + (A * B * D) +
(A * C * D) + (B * C * D) + (A * B * C * D), data = df2)
Residuals:
Min 1Q Median 3Q Max
-1.55 -0.95 0.00 0.95 1.55
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 29.450 1.109 26.554 1.16e-14 ***
A1 0.500 1.568 0.319 0.75401
B1 -4.400 1.568 -2.805 0.01270 *
C1 -5.350 1.568 -3.411 0.00358 **
D1 3.150 1.568 2.008 0.06179 .
A1:B1 1.000 2.218 0.451 0.65816
A1:C1 0.750 2.218 0.338 0.73966
A1:D1 -7.700 2.218 -3.471 0.00315 **
B1:C1 6.600 2.218 2.976 0.00892 **
B1:D1 0.900 2.218 0.406 0.69030
C1:D1 1.550 2.218 0.699 0.49471
A1:B1:C1 -5.000 3.137 -1.594 0.13051
A1:B1:D1 4.150 3.137 1.323 0.20444
A1:C1:D1 3.150 3.137 1.004 0.33024
B1:C1:D1 -6.250 3.137 -1.992 0.06367 .
A1:B1:C1:D1 5.600 4.436 1.262 0.22492
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
Residual standard error: 1.568 on 16 degrees of freedom
Multiple R-squared: 0.819, Adjusted R-squared: 0.6494
F-statistic: 4.828 on 15 and 16 DF, p-value: 0.001646
Como podemos ver las variables en nuestro modelo deben considerar a las betas mas significativas
Y=29.45 + -4.4B-5.3C+3.15D-7.7(AD)+6.6(BC)-6.25(BCD)
Problema b)
Utilizaremos qualitytool determinaremos el path del steepest acent
configuracion <- facDesign(k=4, p = 0, replicates = 1, blocks = 1, centerCube = 1)
implicit list embedding of S4 objects is deprecatedimplicit list embedding of S4 objects is deprecatedimplicit list embedding of S4 objects is deprecatedimplicit list embedding of S4 objects is deprecated
df <- as.data.frame(configuracion)
yfactor<-29.45 -4.4*df$B-5.3*df$C+3.15*df$D-7.7*(df$A*df$D)+6.6*(df$B*df$C)-6.25*(df$B*df$C*df$D)
response(configuracion) <- yfactor
tablaAB = steepAscent(c("A","B","C","D"), response = "yfactor", size = 1,data = configuracion)
Steepest Ascent for configuracion
29.45 -4.4*df$B-5.3*df$C+3.15*df$D-7.7*(df$A*df$D)+6.6*(df$B*df$C)-6.25*(df$B*df$C*df$D)
[1] 22.05 50.35 6.65 15.55 23.65 56.55 21.75 25.45 40.85 34.95 4.85 29.45 30.95 39.05 20.25 41.15 37.15
df_tabla_realAB <- as.data.frame(tablaAB)
y_predichoAB <- 29.45 -4.4*df_tabla_realAB$B.real-5.3*df_tabla_realAB$C.real+3.15*df_tabla_realAB$D.real-7.7*(df_tabla_realAB$A.real*df_tabla_realAB$D.real)+6.6*(df_tabla_realAB$B.real*df_tabla_realAB$C.real)-6.25*(df_tabla_realAB$B.real*df_tabla_realAB$C.real*df_tabla_realAB$D.real)
response(tablaAB) <- y_predichoAB
tablaAB
df_AB <- as.data.frame(tablaAB)
plot(tablaAB)+ lines(df_AB$Delta,df_AB$y_predichoAB, col="blue" )
integer(0)
NA
NA
problema c) restringiendo x1+x2=2.7
E( y) = 14 + 5x1 - 10x2 + 3x1x2
problema a) Grafique el path basandose en los parametros actuales si la interaccion x1x2 es ignorada
Utilizando qualitytool para k2
configuracion <- facDesign(k=2, p = 0, replicates = 1, blocks = 1, centerCube = 1)
implicit list embedding of S4 objects is deprecatedimplicit list embedding of S4 objects is deprecated
df <- as.data.frame(configuracion)
yfactor<- 14+5*df$A- 10*df$B + 3*df$A*df$B*0
response(configuracion) <- yfactor
tablaAB = steepAscent(c("A","B"), response = "yfactor", size = 1,data = configuracion)
Steepest Ascent for configuracion
df_tabla_realAB <- as.data.frame(tablaAB)
y_predichoAB <- 14 +(5*df_tabla_realAB$A.coded)-(10*df_tabla_realAB$B.coded)+(3*df_tabla_realAB$A.coded*df_tabla_realAB$B.coded*0)
response(tablaAB) <- y_predichoAB
tablaAB
df_AB <- as.data.frame(tablaAB)
dflineal<-df_AB
plot(tablaAB)+ lines(df_AB$Delta,df_AB$y_predichoAB, col="blue" )
integer(0)
Problema B) muestre la relacion con x1*x2
configuracion <- facDesign(k=2, p = 0, replicates = 1, blocks = 1, centerCube = 1)
implicit list embedding of S4 objects is deprecatedimplicit list embedding of S4 objects is deprecated
df <- as.data.frame(configuracion)
yfactor<- 14+5*df$A- 10*df$B + 3*df$A*df$B
response(configuracion) <- yfactor
tablaAB = steepAscent(c("A","B"), response = "yfactor", size = 1,data = configuracion)
Steepest Ascent for configuracion
df_tabla_realAB <- as.data.frame(tablaAB)
y_predichoAB <- 14 +(5*df_tabla_realAB$A.coded)-(10*df_tabla_realAB$B.coded)+(3*df_tabla_realAB$A.coded*df_tabla_realAB$B.coded)
response(tablaAB) <- y_predichoAB
tablaAB
df_AB <- as.data.frame(tablaAB)
plot(tablaAB)+ lines(df_AB$Delta,df_AB$y_predichoAB, col="blue" )+ lines(dflineal$Delta,dflineal$y_predichoAB, col="blue" )
integer(0)
problema c) Aunque los dos puntos parten de la misma linea, vemos como la relación no lineal de x1x2 hace que el valor predicho de calculo se degrade con el delta