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