====== Vivian El Dash ======
{{:01_curso_atual:alunos:trabalho_final:vivian.dash:vi.jpg?200|}}
Mestranda em Fisiologia Geral
Laboratório de Energética e Fisiologia Teórica (LEFT)
Departamento de Fisiologia
Instituto de Biociências
Universidade de São Paulo
===== Meus exercícios =====
{{:01_curso_atual:alunos:trabalho_final:vivian.dash:exercicios_preparacao.r|}}
{{:01_curso_atual:alunos:trabalho_final:vivian.dash:exercicio_analise_exploratoria_de_dados_respostas.r|}}
{{:01_curso_atual:alunos:trabalho_final:vivian.dash:exercicios_criacao_de_graficos.r|}}
{{:01_curso_atual:alunos:trabalho_final:vivian.dash:107.2o_modelo_mais_simples_possivel.r|}}
{{:01_curso_atual:alunos:trabalho_final:vivian.dash:exercicico_de_regressao_multipla_resposta_final.r|}}
{{:01_curso_atual:alunos:trabalho_final:vivian.dash:exercicio_reamostragem_e_permutacao.r|}}
{{:01_curso_atual:alunos:trabalho_final:vivian.dash:exercicios_construcao_de_funcoes.r|}}
===== Trabalho final =====
{{:01_curso_atual:alunos:trabalho_final:vivian.dash:proposta_funcaov.txt|}}
Sua proposta A me parece muito interessante, em especial pelo fato dela aceitar vários intervalos de tempo para calcular a concentração. Só fiquei em dúvida se a função só funciona com humanos ou se tem como ajustar os parâmetros para qualquer animal. Eu acho o gráfico uma boa ideia e, por fim, eu sugeriria: calcular alguma medida de incerteza nas estimativas de concentração, se for possível estimar essa incerteza (fiquei pirando aqui, que a função poderia dar ao usuário a opção de incluir alguma medida de incerteza das informações de entrada, aí isso seria incirporado no resultado final. Mas eu não entendo de fisiologia então não sei se estou viajando).
O plano B também parece bom, só acho que precisa explicar melhor o que são esses gradientes caso você escolha seguir com o plano B.
E só uma coisa Vivian, ao invés de postar um documento com a proposta, coloque o texto da proposta diretamente na wiki por favor.
----//[[gruingas@gmail.com|Danilo G Muniz]]//
==== Página de ajuda ====
OBS aos comentários (não faz parte do help): Eu não sei como faria para colocar uma incerteza associada...provavelmente teria que pesquisar uma média meio geral dos valores de BAC para cada condição e ver como eu me aproximo (ou não) deles...mas não tive muito tempo, mals. Quanto à outros animais, acredito que sim, alterando-se as constantes k1 e k2 do código. Disse na proposta que iria ponderar por sexo, mas o modelo que encontrei para sexo não mostrava o crescimento do BAC até o pico, o que eu queria, por isso optei por não utilizar essa variável.
bac package:nenhum R Documentation
Cálculo do conteúdo sanguíneo de álcool (BAC) ao longo do tempo
Description:
A função calcula o conteúdo de álcool no sangue em determinado instante e ao longo de um intervalo de tempo, dado o volume, abv e intervalo d entre bebidas consumidas. É gerado um gráfico do BAC em função do tempo
Usage:
bac(vol, abv, int, tfinal = 300, tnow = 50, Mb = 80)
Arguments:
vol: vetor numérico. Volume da bebida consumida [ml]
abv: vetor numérico. teor alcoólico da bebida consumida [%vol/vol]
int: vetor numérico. Tempo transcorrido entre o consumo de cada bebiba e o instante zero [min]
tfinal: numérico. Intervalo de tempo no qual se deseja calcular o BAC. Será utilizado como limite no eixo X no gráfico BAC X tempo. [min]
tnow = numérico. Momento de interesse no qual se deseja saber o valor do BAC [min]
Details:
Cada bebida consumida corresponde à uma posição nos vetores vol, abv e int. Os vetores não precisam apresentar, necessariamente ordem temporal, entretanto deve existir corespondência nas posições entre os 3 vetores.Os 3 vetores devem apresentar o mesmo número de elementos. É calculado o conteúdo sanguíneo de álcool em um dado intervalo de tempo considerando o conteúdo de álcool ingerido e metabolizado até este dado momento. É gerado um gráfico com o valor do BAC ao longo do intervalo tempo = 0 até tempo = tfinal e plotado juntamente uma linha correspondente ao valor de BAC a partir qual, se for pego dirigindo, pode ser preso(a). É ressaltado no gráfico o ponto correspondente ao valor BAC para o tempo = tnow.
Value:
Um gráfico é gerado. Uma lista é retornada mas não é exibida na tela, com os
seguintes objetos:
bact[tnow] : BAC [mg/L] no instante tnow
bact: BAC [mg/L] no ao longo do intervalo 0 à tfinal
Warning:
Os valores de BAC corespodem a uma estimativa. Seu BAC, de fato, podem variar dependendo de características individuais, etnia, sexo, consumo de alimento/água associados ao álcool. Se beber não dirija. Consuma bebidas álcoolicas com parcimônia.
Author(s):
Vivian ElDash
vivian.eldash@gmail.com
References:
https://consciencianodiaadia.com/2008/06/23/consumo-de-alcool-consciente-para-nao-termos-problemas-com-o-bafometro/
Ludwin C. B Blood Alcohol Content. 2011;3(2):1-8.
Examples:
# Exemplo com uma entrada. Baseado nos dados utilizados por Ludwin, 2011.
bac(vol = 15, abv = 0.95, int = 0, tfinal = 200, tnow = 50, Mb = 75)
# Exemplo com uma entrada. Baseado no exemplo de https://consciencianodiaadia.com.
bac(vol = 250, abv = 0.125, int = 20, tfinal = 300, tnow = 180, Mb = 80)
# Exemplo com 3 entradas indenticas, temporalmente ordenadas.
vol = c(200, 200, 200)
abv = c(0.05, 0.05, 0.05)
int = c(0,30,60)
bac(vol, abv , int , tfinal = 350, tnow = 150, Mb = 70)
# Exemplo com 3 entradas distintas, não ordenadas temporalmente. Primeiro consumo sendo 15' após instantante
inicial
vol = c(200, 50, 320)
abv = c(0.055, 0.40, 0.12)
int = c(15,120,50)
bac(vol, abv , int , tfinal = 450, tnow = 150, Mb = 70)
==== Código da função ====
# Mb = massa corpórea [Kg]
# vol = vetor numérico contendo o volume da bebida consumida [ml]
# abv = vetor numérico contendo o teor alcoólico da bebida consumida [%vol/vol]
# int = vetor numérico contendo o tempo transcorrido entre o consumo de cada
# bebida e o instante zero [min]
# obs: vol, abv e int não precisam necessariamente estar temporalmente ordenados
# (ex: 10', 20', 30'), mas deve existir correspondência entre as posições em cada vetor. Cada bebida (vol, abv, int) é uma entrada.
# tfinal = intervalo de tempo no qual se deseja calcular o BAC. Será utilizado
# como limite no eixo X no gráfico BAC X tempo. [min]
# tnow = momento de interesse no qual se deseja saber o valor do BAC [min]
# criação da função "bac" e definição dos argumentos, tanto na chamada da função
# como adotados no código da mesma (linhas 14 à 20)
bac = function(vol, abv, int, tfinal,tnow, Mb) {
Mb = Mb
vol = vol
abv = abv
int = int
tfinal = tfinal
tnow = tnow
# caso os 3 vetores de entrada apresentem tamanhos distintos...
if (length(vol) != length(abv)|length(vol) != length(int)|length(vol) != length(int)) {
# imprimir a seguinte mensagem em tela e interromper o cálculo do BAC
stop(print("Vetores de tamanho distintos. Verifique se cada posição nos vetores vol, abv, e int correspondem aos dados referentes à uma bebida consumida"))
}
# caso o tnow seja maior que tfinal
if (tfinal < tnow) {
# imprimir a seguinte mensagem (porém realizar o cálculo do BAC normalmente)
print("O BAC referente ao momento tnow está além das dimensões do gráfico e não será visível no mesmo")
}
# densidade do álcool em relação à água [g/ml]
d = 0.8
# constante de absorção estomacal do etanol[min^-1] (Ludwin, 2011)
k1 = 0.109456
#constante de metabolização do etanol, uma vez no sangue [min^-1] (Ludwin, 2011)
# k2 foi modificada do artigo original, de modo a ser proporcional à taxa
# metabólica (TM proporcional à M^0.75), sendo assim, o BAC é ponderado pela
# massa corpórea
k2 = 0.0006955675*(Mb^0.75)
# concentração de álcool no estomago [mg/L]
A = vol*abv*d*1000*0.0214
# criação de uma matriz contendo "zeros", na qual serão colocados os valores de
# BAC ao longo do tempo para cada entrada isoladamente. As dimensões correspondem
# ao número de entradas (linhas) pelo intervalo no qual será calculado (colunas)
B = matrix(data = 0, ncol = tfinal, nrow = length(vol))
# Cálculo do BAC ao longo do tempo para cada entrada de acordo com a equação
# proposta por Ludwin (2011)
# "abertura" do loop, o qual será "rodado" da primeira até a última entrada
# o número de interações é equivalente ao comprimento do vetpr "vol" (poderia ter
# sido utilizado também o comprimento dos vetores "abv" ou "int", uma vez que
# apresentam o mesmo número de elementos)
for (i in 1:length(vol)) {
# quantidade de valores de BAC a ser calculada para cada entrada
t = c(0:((tfinal-1) - int[i]))
# cálculo dos valores de BAC para cada entrada. Uma vez que o número de valores
# em si difere por entrada (quanto mais distantes temporalmente do último consumo,
# maior o tamanho do vetor), e de modo a manter a relação temporal entre as
# colunas na matriz B, cada vetor do cálculo do BAC é concatenado com um vetor
# de zeros de comprimento distinto, de modo que a soma do comprimento do vetor
# de zeros e vetor de BAC resulte no valor do argumento "int". Assim, na primeira
# coluna de B temos (primeiro instante) o BAC para cada uma das bebidas, sendo
# este zero para as bebidas consumidas após o primeiro instante.
B[i,] = c(rep(0, int[i]), A[i]*(k1/(k2-k1))*((exp(-k1*t)) - (exp(-k2*t))))
}
# soma dos valores de BAC a cada instante (correspondente às colunas da matriz B)
bact = c(apply(B, MARGIN = 2, FUN = sum))
# plot do BAC em função do tempo, já considerando todas as entradas, e estabelecimento
# de parametros gráficos (legenda e parametros "estéticos")
plot(bact, type = "l", xlab = "Tempo [min]", ylab = "Concentração de álcool no sangue [mg/L]",tcl = 0.3)
# criação de uma linha com o valor de BAC no qual, caso seja "parado pela polícia"
# pode ser preso
segments(x0 = 0, x1 = tfinal, y0 = 60, y1 = 60)
# legenda da referida linha
text(x = (tfinal - 50), y = 70, label = "Limite para ser preso(a)", cex = 0.6)
# destaque no gráfico do BAC para o momento de interesse estabelecido no parâmetro "tnow"
points(tnow, bact[tnow], col = "red", pch = 19)
# mensagem a ser impressa para o usurário com o valor do BAC no tnow
(cat(paste("Concentração de álcool do sangue após ",tnow, "minutos é do início do consumo é",bact[tnow], " mg/L" )))
# valor do BAC em tnow a ser retornado ao usuário
return(list(bact[tnow], bact))
}