Lex B
2012-Sep-09 02:12 UTC
[R-es] Almacenar resultados de una iteracion for en un dataframe
Buenas noches, las sentencias de repeticion me han generado muchos
problemas, en este caso, la idea es almacenar como filas de un data.frame
los resultados de las funciones Lim.inf y Lim.sup, les agradezco su ayuda,
el codigo que quiero correr es el siguiente, y lo hace bastante bien, pero
no puedo ni visualizar y mucho menos trabajar sobre los resultados de estas
dos funciones.
Mi <- 134
sigma <- 37.841
n <- 30
sims <- 100
cont <- rep(0, sims)
alfa <- 0.05
for(i in 1:sims) {
x <- rnorm(n, Mi, sigma)
Lim.inf <- (mean(x) - (qt(1-alfa / 2, n-1) * (sd(x) / sqrt(n))))
Lim.sup <- (mean(x) + (qt(1-alfa / 2, n-1) * (sd(x) / sqrt(n))))
if(Lim.inf < Mi && Mi < Lim.sup)
{cont[i] <- 1}
}
sum(cont) / sims
--
ALEXANDER BERNAL MUÑOZ
U SANTO TOMAS - ESTADÍSTICA - BOGOTÁ
[[alternative HTML version deleted]]
Fernando Macedo
2012-Sep-09 13:04 UTC
[R-es] Almacenar resultados de una iteracion for en un dataframe
En particular lo resolví de la siguiente manera:
Mi <- 134
sigma <- 37.841
n <- 30
sims <- 100
cont <- rep(0, sims)
alfa <- 0.05
*res=matrix(0,sims,2)*
for(i in 1:sims) {
x <- rnorm(n, Mi, sigma)
Lim.inf <- (mean(x) - (qt(1-alfa / 2, n-1) * (sd(x) / sqrt(n))))
Lim.sup <- (mean(x) + (qt(1-alfa / 2, n-1) * (sd(x) / sqrt(n))))
if(Lim.inf < Mi && Mi < Lim.sup)
{cont[i] <- 1}
*res[i,1]=Lim.inf
res[i,2]=Lim.sup*
}
sum(cont) / sims
Le agregue una matriz que recogerá los resultados y por cada iteración
ingresa un resultado en la línea correspondiente. De esa forma salva
todos los valores, si desearas incluir solamente los que cumplan la
condición que colocas deberías incluirlos en el if, creo.
Puede haber otra opción más eficiente, de repente otros con mayor
experiencia lo pueden comentar mejor.
Saludos
Fernando Macedo
El 08/09/12 23:12, Lex B escribió:> Buenas noches, las sentencias de repeticion me han generado muchos
> problemas, en este caso, la idea es almacenar como filas de un data.frame
> los resultados de las funciones Lim.inf y Lim.sup, les agradezco su ayuda,
> el codigo que quiero correr es el siguiente, y lo hace bastante bien, pero
> no puedo ni visualizar y mucho menos trabajar sobre los resultados de estas
> dos funciones.
>
>
> Mi <- 134
> sigma <- 37.841
> n <- 30
> sims <- 100
> cont <- rep(0, sims)
> alfa <- 0.05
> for(i in 1:sims) {
> x <- rnorm(n, Mi, sigma)
> Lim.inf <- (mean(x) - (qt(1-alfa / 2, n-1) * (sd(x) / sqrt(n))))
> Lim.sup <- (mean(x) + (qt(1-alfa / 2, n-1) * (sd(x) / sqrt(n))))
> if(Lim.inf < Mi && Mi < Lim.sup)
> {cont[i] <- 1}
> }
> sum(cont) / sims
>
>
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
[[alternative HTML version deleted]]
Carlos Ortega
2012-Sep-09 20:07 UTC
[R-es] Almacenar resultados de una iteracion for en un dataframe
Hola,
En la misma línea de la solución que ya te han proporcionado.
Incluyo el código añadido en rojo además de un breve comentario con las
instrucciones básicas a replicar en casos similares.
####################################
Mi <- 134
sigma <- 37.841
n <- 30
sims <- 100
cont <- rep(0, sims)
alfa <- 0.05
#Inicializar y dimensionar el data.frame donde se almacenarán los
resultados.
#El dimensionar no es estrictamente necesario, pero si se quieren modificar
data.frames grandes ayuda.
resul.df <- data.frame(lim.inf=rep(0,sims), lim.sup=rep(0,sims))
for(i in 1:sims) {
x <- rnorm(n, Mi, sigma)
Lim.inf <- (mean(x) - (qt(1-alfa / 2, n-1) * (sd(x) / sqrt(n))))
Lim.sup <- (mean(x) + (qt(1-alfa / 2, n-1) * (sd(x) / sqrt(n))))
#Incluyo en cada iteración el valor de Lim.inf y Lim.sup en una nueva fila
del data.frame.
resul.df$lim.inf[i] <- Lim.inf
resul.df$lim.sup[i] <- Lim.sup
if(Lim.inf < Mi && Mi < Lim.sup)
{cont[i] <- 1}
}
sum(cont) / sims
####################################
Saludos,
Carlos Ortega
www.qualityexcellence.es
El 9 de septiembre de 2012 04:12, Lex B
<bernalm.alexander@gmail.com>escribió:
> Buenas noches, las sentencias de repeticion me han generado muchos
> problemas, en este caso, la idea es almacenar como filas de un data.frame
> los resultados de las funciones Lim.inf y Lim.sup, les agradezco su ayuda,
> el codigo que quiero correr es el siguiente, y lo hace bastante bien, pero
> no puedo ni visualizar y mucho menos trabajar sobre los resultados de estas
> dos funciones.
>
>
> Mi <- 134
> sigma <- 37.841
> n <- 30
> sims <- 100
> cont <- rep(0, sims)
> alfa <- 0.05
> for(i in 1:sims) {
> x <- rnorm(n, Mi, sigma)
> Lim.inf <- (mean(x) - (qt(1-alfa / 2, n-1) * (sd(x) / sqrt(n))))
> Lim.sup <- (mean(x) + (qt(1-alfa / 2, n-1) * (sd(x) / sqrt(n))))
> if(Lim.inf < Mi && Mi < Lim.sup)
> {cont[i] <- 1}
> }
> sum(cont) / sims
>
>
> --
>
> ALEXANDER BERNAL MUÑOZ
> U SANTO TOMAS - ESTADÍSTICA - BOGOTÁ
>
> [[alternative HTML version deleted]]
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
--
Saludos,
Carlos Ortega
www.qualityexcellence.es
[[alternative HTML version deleted]]