Simulações

## Objetivo: criar função que simule dados usando os parâmetros encontrados

# A função deve ter como parâmetros:
# - tempos inicial e final (i,f) (0,1,2,4,6,7)
# - efeito dos fatores (l,s,c) (valores dados em porcentagem)
# - efeito das interações (ls,lc,sc,lsc) (idem)
# - natureza do efeito: aditivo (incremento de x %)

# Servirá de base para as simulações:
# - dados iniciais (ti)
# - médias e variâncias dos blocos entre os tempos i e f


# A simulação replicará as diferenças observadas entre os blocos
# e permitirá a manipulação dos efeitos
# A função deve retornar uma tabela na mesma forma "d" para ser analisada pelo função "aleat"


############################################################################
simula=function(i,f,l,s,c,ls,lc,sc,lsc){

d=org.dados(i,f) # base de dados originais

# cálculo das médias dos blocos
a=1:6
medias=data.frame(g.dsh=a,g.h=a,g.nl=a,g.hi=a,g.tm=a,r.dsh=a,r.h=a,r.nl=a,r.hi=a,r.tm=a)
for(x in 6:15){ 
medias[,x-5]=aggregate(d[,x],list(d$block),mean)[,2]
}

# cálculo das variâncias dos blocos
v=data.frame(g.dsh=a,g.h=a,g.nl=a,g.hi=a,g.tm=a,r.dsh=a,r.h=a,r.nl=a,r.hi=a,r.tm=a)
for(x in 6:15){ 
v[,x-5]=aggregate(d[,x],list(d$block),var)[,2]
}

# substitui os valores originais pelos simulados
for(x in 1:6){
for(y in 6:15){
d[d$block==x,y]=sample(rnorm(1000,medias[x,(y-5)],sqrt(v[x,(y-5)])),8)
}}

# adição dos fatores na forma de porcentagem (ex: fator luz levou a um aumento de 10% no dsh)
# lembrando que os fatores são: l, s, c, ls, lc, sc, lsc

## fatores (l,s,c)

# luz
for(x in 6:15){
d[d$light==1,x]=d[d$light==1,x]+l*d[d$light==1,x]
}

# serrapilheira

for(x in 6:15){
d[d$litter==1,x]=d[d$litter==1,x]+s*d[d$litter==1,x]
}

# competição

for(x in 6:15){
d[d$comp==1,x]=d[d$comp==1,x]+c*d[d$comp==1,x]
}

## interações de 1a ordem (ls,lc,sc)

# ls 

for(x in 6:15){
d[d$light==1&d$litter==1,x]=d[d$light==1&d$litter==1,x]+ls*d[d$light==1&d$litter==1,x]
}

# lc

for(x in 6:15){
d[d$light==1&d$comp==1,x]=d[d$light==1&d$comp==1,x]+lc*d[d$light==1&d$comp==1,x]
}

# sc

for(x in 6:15){
d[d$comp==1&d$litter==1,x]=d[d$comp==1&d$litter==1,x]+sc*d[d$comp==1&d$litter==1,x]
}

## interações de 2a ordem (lsc)

for(x in 6:15){
d[d$light==1&d$comp==1&d$litter==1,x]=d[d$light==1&d$comp==1&d$litter==1,x]+lsc*d[d$light&d$comp==1&d$litter==1,x]
}

return(d)
}