1 votos

¿Cuál es la mejor manera de muestrear los datos teniendo en cuenta la variación de los factores relacionados?

Así que tengo algunos datos sobre el tabaquismo y he estado tratando de modelar el decaimiento de las señales de metilación al dejar de fumar. Para ello he reasignado ~1038 muestras como fumadores (1) o no fumadores (2) basándome en el estatus de fumador y el tiempo transcurrido desde que dejó de fumar. Los fumadores son los actuales fumadores y los antiguos fumadores que dejaron de fumar hace < t años y los no fumadores son los que nunca han fumado y los antiguos fumadores que dejaron de fumar hace > t años. Los datos tienen el siguiente aspecto.

status smcess t0 t4 t8 t12 t16 t20 ... 2 7 2 2 1 1 1 1 ... 2 17 2 2 2 2 2 1 ... 2 6 2 2 1 1 1 1 ... 3 NA 2 2 2 2 2 2 ... 1 0 1 1 1 1 1 1 ... 3 NA 2 2 2 2 2 2 ...

A continuación, deseo comparar estos "fumadores" y "no fumadores" recodificados en cada valor de t. La razón por la que incluí a los fumadores actuales y a los que nunca han fumado es para ayudar a la potencia estadística en estos modelos. Sin embargo, obviamente no se dividen por igual y a medida que uno aumenta el otro disminuye así.

smokers = 185,229,271,306,336,362,389,418,445,475,498,516,528,536,541,542,543
nonsmoks = 853,809,767,732,702,676,649,620,593,563,540,522,510,502,497,496,495
t = 0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64

Quería tener ~180 fumadores y ~180 no fumadores para cada comparación. Cuando sólo uso sample() obtengo bastante variación.

Mi pregunta es cuál es la mejor manera de muestrear estos datos, teniendo en cuenta la variación en el tiempo desde que se dejó de fumar y el diferente número de fumadores, exfumadores y nunca fumadores.

He intentado utilizar split() y cut() basándome en smcess pero esto no divide en grupos iguales dado el gran número de fumadores actuales (185) y nunca (494). Cualquier sugerencia o idea será muy apreciada.

A

0voto

Y2K Puntos 11

Véase la documentación al respecto en el caret paquete. caret Documentación

Para dividir los resultados utilice:

 library(caret)
 set.seed(3456)
 trainIndex <- createDataPartition(data$outcome, p = .8, 
                              list = FALSE, 
                              times = 1)

A continuación, puede utilizar el vector de índices para subdividir su marco de datos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X