Foro de discusión y soporte para usuarios de R

Un foro abierto a todos los temas relacionados con R que quiera.
Nota: Una url estable a este foro es https://knuth.uca.es/R-foro.

Varianza para cada columnade una matriz

de Daniel Velez -

Buenas tardes

Tengo una matriz de 266x107, en cada columna debo calcular la varianza cada 7 filas removiendo los NA, por ejemplo:


3.4 1.3 8.9 4.1
6.7 6.1 1.1 5.7
2.5 0.3 7.8 NA
9.7 10.2 7.6 57.6
3.4 6.5 9.3 4.5
31.5 41.2 3.2 4.9
1.3 3.9 NA 7.3
VAR VAR VAR VAR
Donde VAR es la varianza para cada columna.
Despues de esas 7 filas, en la misma matriz se toman las siguientes 7 filas y se hace lo mismo. Para hacer esto pero sumando las columnas se que existe la funcion colSums, pero para la variaza la funcion equivalente no es tan versatil y no permite calcular la varianza cada 7 filas.
Agradezco la ayuda que me puedan brindar

Leer una matriz

de Roque Garrido Bernal -

Hola que tal,

estoy trabajando en esta pequena matriz en un archivo de excel la cual muestra el parametro en la cabecera

y abajo los valores que arroja. El -80-54 son los rangos permitidos, que formula matematica

podria usar en R para que me diga que valores estan dentro de los rangos permitidos.


2H_A_18P0dBm_5300 2H_G_21P0dBm_2p4 2H_G_21P0dBm_2p45
-80 -80 -80
-54 -45 -45
-56.059 -54.5415 -55.448
-56.619 -54.2065 -54.986
-56.524 -54.5895 -55.144
-56.282 -54.2755 -55.316

Saludos!

Función y graficar función

de victor lopez -

Tengo este codigo y me gustaria poder hacer diferentes simulaciones a la vez, he pensado en crear un bucle for, pero no he encontrado la manera de hacerlo.

Aver si me podeis hechar una manita alguna alma caritativa :)

Muchas gracias


dinero <- 10
q <- 0.52
tiempo <- 1
historialdinero <- c(dinero)
apuesta <- 1

while(historialdinero[tiempo] > 0 & tiempo < 10000)
    {
    tiempo <- tiempo + 1
    ruleta <- runif(1)
    if(ruleta > q)
        {
        historialdinero[tiempo] <- historialdinero[(tiempo-1)] + apuesta
        apuesta <- 1
        }
    else
        {
        historialdinero[tiempo] <- historialdinero[(tiempo-1)] - apuesta
        apuesta <- apuesta*2
        }
    }

historialdinero
plot.ts(historialdinero, lwd=3)
abline(h=mean(historialdinero),col="red", lty=3)
abline(h=max(historialdinero), col="blue")

geoR: Validacion cruzada de semivariogramas robustos y con transformación box-cox

de pedro Apablaza Bastias -

Estimados:

En forma resumida, tengo el siguiente problema, quiero validar los modelos esferico, gaussiano y exponencial para un semivariograma al cual se le ha realizado la transformacion box-cox a los datos originales. Alguien me puede dar un ejemplo de como deberia escribir el script para el xvalid del siguiente ejemplo??? 

variograma <- variog(D, max.dist=200, uvec=30, lambda=0.14146, estimator.type="modulus")

ini.vals_amarillo <- expand.grid(seq(0, 120, by=0.25), seq(0, 40, by=0.2))

vario.wls <- variofit(variograma, ini = ini.vals_amarillo, cov.model = "spherical", fix.nugget = FALSE, nugget = 50, weights = "cressie")

xv.wls <- xvalid(.......................................................)

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

he probado, pero ninguna ha resultado, enuncio algunas de ellas

·################################################################################

xv.wls1 <- xvalid(D, model = vario.wls)

xv.wls1 <- xvalid(D, coords = D$coords, data = D$data, model = vario.wls)

xv.wls1 <- xvalid(D, coords = D$coords, data = D$data+1, model = vario.wls)

xv.wls1 <- xvalid(D, coords = D$coords, data = D$data+1, model = vario.wls, reestimate=true,   +vario.obj=variograma)

xv.wls1 <- xvalid(D, coords = D$coords, data = D$data+1, model = vario.wls, reestimate=true,   +vario.obj=variograma), ini = ini.vals_amarillo, cov.model = "gaussian", fix.nugget = FALSE, nugget = 50, weights = +"cressie")

#############################################################################################Todo lo anterior me llevo a la siguiente idea:

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

si transformo mi matriz original D (en otras palabras, transformo por boxcox la data=D$data de mi geodata) y llamo a la nueva matriz Dt entonces:

variograma_t <- variog(Dt, max.dist=200, uvec=30, estimator.type="modulus") #### LA MATRIZ TRANSFORMADA

deberia ser lo mismo que:

variograma <- variog(D, max.dist=200, uvec=30, lambda=0.14146, estimator.type="modulus") # LA MATRIZ ORIGINAL CON TRANSFORMACION BOX-COX

pero resulta que NO.., alguien me puede explica porque??????

la idea iba a que estas dos expresiones deberain ser iguales

vario.wls <- variofit(variograma, ini = ini.vals_amarillo, cov.model = "spherical", fix.nugget = FALSE, nugget = 50, weights = "cressie")

vario.wls_t <- variofit(variograma_t, ini = ini.vals_amarillo, cov.model = "spherical", fix.nugget = FALSE, nugget = 50, weights = "cressie")

por ende DE FORMA DIRECTA:

el xvlid(Dt, vario.wls_t) 

AGRADEXZCO CUALQUIER COMENTARIO Y AYUDA


SALUDOS CORDIALES



Tiempos de ejecucion en algoritmo paralello en R

de Denis Espinosa -

Estoy usando las bibliotecas doParallel y foreach para llevar a cabo un algoritmo para hacer un test a un conjunto de numeros aleatorios. El problema esta en que el tiempo de ejecucion del algoritmo secuencial es mucho menor que el de el mismo algoritmo escrito en paralelo. Alguna sugerencia de lo que puede estar pasando. aqui va mi codigo del algoritmo secuencial:

 

carreras_seq<-function(){  
  numerosa<-runif(10e6)
  writeLines("Test Carreras por encima y por debajo de la media para la validacion de independencia en un conjunto de numeros aleatorios")
  media<-0.99/2
  b<-0  
  n<-length(numerosa)
  n1<-0
  n2<-0
  for(i in 1:(n-1))
{    
  #actualizando actual
  if (numerosa[i]>=media){
    n1<-n1+1
    actual<-TRUE
  }
  else
  {
    n2<-n2+1
    actual<-FALSE
  }
  #actualizando siguiente
  if (numerosa[i+1]>=media){
    siguiente<-TRUE
  }
  else
  {     
    siguiente<-FALSE
  }
  if (actual!=siguiente) {b<-b+1 }
   
}
#validandola ultima
if ((numerosa[n]>=media && numerosa[n-1]<media) || (numerosa[n]<media && numerosa[n-1]>=media))
  b<-b+1
if (numerosa[n]>=media){n1<-n1+1}else{n2<-n2+1}
writeLines(paste("n1 = ",toString(n1),"n2 = ",toString(n2),"b = ",toString(b),sep=" "))  
m<-(2*n1*n2)/n +0.5
o<-2*n1*n2*(2*n1*n2 - n)/(n^2*(n-1))
writeLines(paste("Mb = ",toString(m),"O^2b = ",toString(o),sep=" "))
z<-(b-m)/o^(.5)
writeLines(paste("Valor del estadigrafo de prueba Z = ",toString(z),sep=" "))  
z

}

y por aca el mismo en paralelo

carreras<-function(numerosa){  
  c<-iniciaCluster()
  writeLines("Test Carreras por encima y por debajo de la media para la validacion de independencia en un conjunto de numeros aleatorios")
  numerosa<-runif(10e6)
  media<-0.99/2
  b1<-0  
  n<-length(numerosa)
  n1<-0
  n2<-0
  b<-foreach(i = 1:(n-1), .combine = "+") %dopar%
  {    
    #actualizando actual
    if (numerosa[i]>=media){
      n1<-n1+1
      actual<-TRUE
    }
    else
    {
      n2<-n2+1
      actual<-FALSE
    }
    #actualizando siguiente
    if (numerosa[i+1]>=media){
      siguiente<-TRUE
    }
    else
    {     
      siguiente<-FALSE
    }
    if (actual!=siguiente) {b1 <- 1} else b1<- 0
    b1     
  }
  #validandola ultima
  if ((numerosa[n]>=media && numerosa[n-1]<media) || (numerosa[n]<media && numerosa[n-1]>=media))
   b<-b1+1
  if (numerosa[n]>=media){n1<-n1+1}else{n2<-n2+1}
  writeLines(paste("n1 = ",toString(n1),"n2 = ",toString(n2),"b = ",toString(b),sep=" "))  
  m<-(2*n1*n2)/n +0.5
  o<-2*n1*n2*(2*n1*n2 - n)/(n^2*(n-1))
  writeLines(paste("Mb = ",toString(m),"O^2b = ",toString(o),sep=" "))
  z<-(b-m)/o^(.5)
  writeLines(paste("Valor del estadigrafo de prueba Z = ",toString(z),sep=" "))  
  z
  stopCluster(c)
}

 

Generacion de Números aleatorios

de Helena CB -
Hola a todos!!

Mi consulta es para generar números aleatorios con distribución exponencial generalizada [ G(t) = (1 − e−{λt} )^2 ].

He estado trabajando en un proyecto, pero venía haciéndolo con rexp, y mis resultados no son los esperados, la diferencia es mucha, y el saber como hacerlo es lo que me falta para terminar.

Espero puedan ayudarme!!! Gracias

Leer datos en streaming desde puerto udp y de serie

de antonio merino -

Hola,

Recibo a través de un puerto udp (también me interesa como se hace a través de puerto serie) datos de gps, profundidad, etc. Querría saber como puedo abrir el puerto y leer la información en streaming

Muchas gracias

Probabilidad acumulada de los elemetnos de un vector

de Joan Aguilar Fàbregas -

Hola compañeros,

Soy nuevo en el foro. Mucho gusto.

Llevo tiempo dándole vueltas a un problema que me surgió en el trato de datos que recojo de un instrumento de medida. 

Para ello, antes de hacer pruebas con ficheros intento simplificar el problema con vectores, pues es más sencillo, creo.

Conocéis la manera de representar con un gráfico de probabilidad acumulada, la probabilidad de los elementos de un vector. Existe alguna función que lo permita? He intentado hacerlo mediante hist(), pero no consigo mi objetivo.

Perdón si la pregunta es obvia, pero es que no lo consigo.

Si pudierais mandarme un ejemplo lo agradecería muchísimo.

Saludos y gracias mil,


Problema con el paquete ggplo2

de Efraín Carrillo López -

Hola a todos! Mi nombre es Efraín. Llevo usando R desde hace un año, supe de este programa gracias a las practicas de una asignatura de la universidad. 

Hoy he tenido un problema al cargar el paquete ggplot2, y es que cuando voy a ejecutarlo con la funcion library() me da un mensaje de error:

> library("ggplot2")

Error in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) : 

    there is no package called ‘colorspace’

In addition: Warning message:

    package ‘ggplot2’ was built under R version 3.1.3 



Error: package or namespace load failed for ‘ggplot2’


¿Alguien me podría ayudar?


Un saludo