## 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)
}