---
title: "Generación de muestras sintéticas para pruebas de homogeneidad"
author: ""
date: ""
output: 
  html_document: 
    number_sections: yes
    toc: yes
---

# Independencia y Homogeneidad

En este ejemplo generamos muestras sintéticas de cadenas de longitud 1000 de las bases "a","c","g" y "t" y calculamos la base de máxima frecuencia.

Primero fijamos la semilla de generación aleatoria por [reproducibilidad}(https://es.wikipedia.org/wiki/Reproducibilidad_y_repetibilidad)

```{r}
set.seed(31415)
```


La generación se produce en tres escenarios/tipos distintos "A", "B" y  "C". Cada escenario aparece con una probabilidad  0.4, 0.3 y 0.3 respectivamente. En cada escenario las probabilidades de aparación de las  cuatro bases es distinta:

* En el tipo A las frecuencias son 0.25 para las cuatro bases
* En el tipo B las frecuencias son 0.26, 0.26, 0.24 y 0.24,  para "a","c","g" y "t" respectivamente.
* En el tipo C las frecuencias son 0.24, 0.25,0.26,0.25, y  0.25,  para "a","c","g" y "t" respectivamente.

Generaremos 10000 muestras de estos tres escenarios en función de su probabilidad.


# Generación de las muestras.

Generamos los tipos en función de sus proporciones.

```{r}
tipo=sample(x=c("A","B","C"),size=10000,replace=TRUE,prob=c(0.4,0.3,0.3))
head(tipo)
str(tipo)
table(tipo)
```

Ahora calculamos para cada uno la base que predomina (si hay empate escogemos la primera que aparece):

```{r}
bases=c("a","c","g","t")
tipo.probs=data.frame(
  p.a=c(0.25,0.26,0.24),
  p.c=c(0.25,0.26,0.25),
  p.g=c(0.25,0.24,0.26),
  p.t=c(0.25,0.24,0.25)
)
tipo.probs
row.names(tipo.probs)=c("A","B","C")

tipo.probs["A",]
tipo.probs["B",]
tipo.probs["C",]

base.predominante= function(tipo,tipo.probs)
  {aux=which.max(table(sample(bases,size=1000,replace=TRUE,prob=tipo.probs[tipo,])))
   names(aux)[1]
}

# Ejemplos generación muestra
base.predominante("A",tipo.probs)
base.predominante("A",tipo.probs)
base.predominante("B",tipo.probs)
base.predominante("B",tipo.probs)
base.predominante("C",tipo.probs)
base.predominante("C",tipo.probs)
```


Ahora generamos la muestra para cada una de las observaciones de la muestra tipos que ya hemos generado.

```{r}
muestra=data.frame(tipo)
muestra$max.frec=unlist(lapply(muestra$tipo,FUN=base.predominante,tipo.probs))

head(muestra)
str(muestra)
##Guardar datos
#Pon tu path
setwd("./")

write.table(muestra,file="MuestraTotalBases.txt",sep="\t",row.names=FALSE)

write.table(muestra[muestra$tipo=="A",],file="muestraTipoAbases.txt",sep="\t",row.names=FALSE)
write.table(muestra[muestra$tipo=="B",],file="muestraTipoBbases.txt",sep="\t",row.names=FALSE)
write.table(muestra[muestra$tipo=="C",],file="muestraTipoCbases.txt",sep="\t",row.names=FALSE)
```

[Podeis bajar los  y el código datos aquí.](http://bioinfo.uib.es/~recerca/MAT2/datos/bases/).
