2015-10-26 1 views
0

Grâce à la communauté vraiment incroyable, mon groupe de projet est un pas de plus pour imiter le bruit de base réaliste de calcium.Simulation de bruit réaliste pour une ligne de base de calcium

J'ai simulé un mouvement de calcium typique dans un modèle mathématique: enter image description here

Merci à la communauté que je pourrais ajouter un bruit aléatoire à la ligne de base irréaliste:

enter image description here

Cependant, la dynamique du bruit est en fait trop vite. Y at-il un moyen de ralentir le bruit et de créer des pics de bruit plus larges au lieu de ces pics. J'ajoute une mesure réelle pour vous montrer ce que je veux dire:

Si cette question est trop spécifique, je présente mes excuses et supprimerai le poste.

Meilleurs voeux et merci!

Répondre

2

Veuillez faire votre question et les exemples reproducible afin que d'autres puissent vous aider. Cela étant dit, il semble que la ligne de base est juste une normale aléatoire - probablement créée avec quelque chose comme x <- rnorm(500). Une façon de rendre cela moins nerveux est de calculer une moyenne mobile. Vous pouvez utiliser un package comme TTR ou zoo pour ce faire, ou vous pouvez créer votre propre fonction. Par exemple:

x <- rnorm(500) 
plot(x, type = "l") 

enter image description here

ma <- function(x, n = 5){ filter(x, rep(1/n, n), sides = 2) } 
plot(ma(x), type = "l") 

enter image description here

plot(ma(x, 10), type = "l") 

enter image description here

+0

Merci, Jason - le résultat semble bon; Cependant, pour mon but, je devrais choisir une valeur n assez élevée (environ 1500) pour un x de 159,957. Plus je vais avec n, plus grande est la zone NA dans les données. Premièrement, je pensais que n devrait simplement être un multiple de x, mais il y a quand même une série de valeurs Y non identifiées lors du tracé des données. Y a-t-il un moyen de surmonter cela? – Arne

+0

tout simplement coupé de la partie NA - merci à tous :) – Arne

1

Je vois votre point maintenant. J'ai deux suggestions pour ce cas, peut-être qu'ils seront utiles:

Essayez d'ajouter du bruit à un sous-ensemble de votre ligne de base (ci-dessous est un 10%)

baseline.index = which(App[,2] == min(App[,2])) 
baseline.index.subset = sample(x = baseline.index, size = 0.1 * length (baseline.index) , replace = F) 
noise = rnorm(length (baseline.index.subset)) 
App[ baseline.index.subset,2] = App[ baseline.index.subset,2] + noise 

Et essayer de jouer un bit avec la moyenne et l'écart type du bruit. à savoir:

noise = rnorm(length (baseline.index.subset), mean = 0, sd = 0.1) 

Faites nous savoir si cela aide