Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2014:alunos:trabalho_final:paula.giroldo:start

Paula Zaterka Giroldo

Mestranda do Departamento de Ecologia do IB-USP, sob orientação da Vânia Pivello.

Exercícios

Espaço que contém meus exercícios resolvidos.

Trabalho Final

Plano A: Função LION

O Imposto de Renda (IR) é uma taxa na qual todo contribuinte (pessoa física ou jurídica) deve pagar uma determinada porcentagem de sua renda média anual para o governo federal. O cálculo do IR tem como base uma tabela de alíquotas e o contribuinte pode optar por pagar a taxa anualmente, no momento da declaração do IR, ou mensalmente, via carnê-leão.

O objetivo da função LION é fornecer o valor de IR de pessoa física que deverá ser pago à Receita Federal.

O usuário fornecerá o valor de sua renda média anual e a função fará o calculo com base na tabela vigente. A função retornará então o valor a ser pago. O usuário poderá explicitar como argumento a natureza da fonte de renda, que pode ou não ser isenta de imposto, alterando o resultado final.

Plano B: Função MUSIC

A musicoterapia utiliza a música e seus elementos a fim de elevar a qualidade de vida através de prevenção, reabilitação ou tratamento e inúmeros estudos demostram seu efeito positivo sobre o bem estar.

O objetivo da função MUSIC é fornecer opções de músicas e discos ao usuário em resposta ao seu estado de espírito atual (input: triste, ansioso, com dor, …), sempre almejando um estado de paz e equilíbrio (default). Uma pesquisa sobre o efeito de gêneros de musica será feita e associada à pesquisas que demostram seu efeito nas pessoas. Um dataframe será criado e será a base de dados da função. O usuário poderá listar mais de um sentimento e então a função cruzará os dados no dataframe e retornará a opção mais apropriada.

Oi Pu!
A proposta A está legal, mas talvez seja um pouco simples. E se você incluísse as opções das formas de pagamento, calculando o quanto a pessoa pagaria de juros e tudo mais? Ou você poderia incluir dependentes como um argumento, e calcular as deduções, por exemplo.
A ideia da proposta B é boa! Mas acho que você vai ter muito mais trabalho para gerar a base de dados do que para a função propriamente dita, então sugiro seguir com a A.
—- Débora

Plano A: Função LION: PROPOSTA AJUSTADA

Sim, vou incluir a dedução por dependente como um argumento e pensar em outros jeitos de tornar a função mais complexa!

Em relação as formas de pagamento, de fato, o contribuinte pode pagar em até 8 quotas, sendo que a partir 3a cota passa a incidir 1% + taxa selic, ajustada mensalmente. Isso significa que eu não vou ter o valor da taxa selic para gerar o valor correto dos juros! A princípio não vejo como trabalhar essa informação na função, mas estou aberta a sugestões!

Obrigada!

FUNCAO LION

### FUNCAO LION ###

# criando a funcao com 9 argumentos: renda é o input de renda anual; saude, prev e escola sao deducoes anuais relativas a dependentes, plano de saude, previdencia e escola.; faixas e aliquotas sao os vetores de faixas de renda e aliquotas, contemplados pela tabela do IR divulgada pela Receita Federal de acordo com o ano-calendario vigente; pordep eh o valor a ser deduzido por dependente e lim.escola eh o valor limite para deducao com instrucao escolar.

lion <- function (renda, dep = 0, saude = 0, prev = 0, escola = 0, faixas=c(22418.64, 33598.32, 44798.28, 55976.16), aliquotas=c(0.075, 0.15, 0.225, 0.275), pordep = 2253.56, lim.escola = 3527.74){ 
 

# Primeiro passo: estabelecer o calculo da Base de Calculo (base), que será o ponto de partida para o calculo do IR, e estabelecer as condicionantes:
  
  ## dep eh o numero de dependentes e deve ser um numero inteiro. Para me assegurar deste input fazemos:
  if(dep - (floor(dep)) != 0) { 
    stop ("Quantos dependentes voce possui? Este valor deve ser um numero inteiro!")
  }
 
  ## se o contribuinte informar renda negativa retorna um erro.
  if(renda < 0) {
    stop ("O valor de renda nao pode ser negativo. Consulte seu contador")
  }

  ## ha deducao de "pordep" anual por dependente  
  valordep <- (pordep*dep)
  
  ##  O limite dedutível dos gastos com despesas de instrução em 2014 eh de 3527.74. Acima deste valor considera-se esse valor ("lim.escola").
  if(escola > lim.escola) {
    warning ("O limite dedutivel dos gastos com despesas de instrução foi excedido."); escola = lim.escola
  }

  ## Se as deducoes forem maiores que a renda o contribuinte certamente tem dividas acumuladas.
  if ((valordep + saude + prev + escola) > renda ) {
    return ("Opa, suas deducoes sao maiores que sua renda?? Considere falar com um consultor financeiro, pois voce provavelmente tem dividas")
  }

  ## o IR sera calculado sobre a base de calculo ('base') que é obtida pela subtracao entre renda e todas as deducoes
  base <- renda - (valordep + saude + prev + escola)
  
  ## se a base estiver dentro da primeira faixa ele esta isento.
  if(base > 0 & base < faixas[1] | base==faixas[1]) {
    warning ("Voce esta isento!"); return(0)
  }
  
  ## se a base for negativa o contribuinte certamente tem dividas acumuladas. 
  if (base < 0 ) {
    return ("Opa, suas deducoes sao maiores que sua renda?? Considere falar com um consultor financeiro, pois voce provavelmente tem dividas")
  }
  
  # Terceiro passo: inserindo a base na respectiva faixa. A funcao for vai correr dentro do vetor de faixas. Quando o valor de base for maior que o valor maximo de uma das faixas (faixas[i] < base) gravaremos a posição i. O valor num_aliquota (correspondente a posicao dentro do vetor de aliquotas) será i. Se o valor da base for menor que o valor da faixa[1] entao num_aliquota = 0. 
  
  num_aliquota = 0 
  for (i in 1:length(faixas)){ 
    if (faixas[i] < base) {
      num_aliquota  = i
    }
  }
  
  # Quarto passo: calculando o IR. Calcula-se a diferença entre a porcentagem cobrada sobre a base e entre a porcentagem que incide apenas sobre as diferenças (ver no help a estrutura generica do calculo de IR progressivo). Se o valor aliquota for diferente de 1, a funcao for vai correr dentro do vetor de aliquotas, sendo que a soma irá acabar no "num_aliquota-1".
  
  IR <- 0 
  if (num_aliquota!=1){
    for (i in 1:(num_aliquota-1)) {
        IR <- IR + aliquotas[i]*(faixas[i+1] - faixas[i])  
    }
  }
  IR <- IR + aliquotas[num_aliquota ]*(base - faixas[num_aliquota])
  
  return(IR)
}  

LION

HELP LION

lion                  packege: nenhum                   R Documentation

  Seleção de dados. Cáculo do valor do Imposto de Renda.

Description:
  LION eh uma funcao que calcula o valor a ser pago ao Imposto de Renda (IR) por pessoas fisicas nao autonomas com desconto completo, ou seja, cuja base de calculo é a diferenca entre o ganho total anual e as deducoes diversas, a partir do exercício de 2015, ano-calendário de 2014. 


Usage:
  
  lion (renda, dep = 0, saude = 0, prev = 0, escola = 0, faixas=c(22418.64, 33598.32, 44798.28, 55976.16), aliquotas=c(0.075, 0.15, 0.225, 0.275), pordep = 2253.56, lim.escola = 3527.74)


Arguments:
  
  renda       Numerico. Renda anual do contribuinte.

  dep         Numerico. Numero de dependentes do contribuinte. Este valor deve ser um número inteiro não negativo.

  saude       Numerico. Valor anual pago pelo contribuinte em plano de saude.

  prev        Numerico. Valor anual pago pelo contribuinte em previdencia oficial.

  escola      Numerico. Valor anual pago com escola pelo numero de filhos.

  faixas      Vetor numerico. As faixas indicam a base de calculo de referencia para calculo do IR. Sujeito a alteracao em funcao do ano-calendario vigente.

  aliquotas   Vetor numerico. As aliquotas indicam a porcentagem de referencia para calculo do IR. Sujeito a alteracao em funcao do ano-calendario vigente.
  
  pordep      Numerico. Valor a ser deduzido por dependente. Sujeito a alteracao em funcao do ano-calendario vigente.

  lim.escola  Numerico. Valor limite dedutível dos gastos com despesas de instrução. Sujeito a alteracao em funcao do ano-calendario vigente.


Details:
  
  Uma das maneiras de calcular o valor do Imposto de Renda anual no Brasil é a partir de uma base de calculo ("base"), obtida a partir da diferença entre renda anual e deduções diversas. A funcao LION considera como deducoes o numero de dependentes (para cada um há desconto de "pordep") e o valor anual pago pelo contribuinte em plano de saude, escola e previdência. 

  A funcao LION retorna o valor a ser pago no caso do desconto completo, conhecido tambem como imposto progressivo, no qual calcula-se a diferença entre a porcentagem cobrada sobre a base e aquelas que deveriam incidir apenas sobre as diferenças. Considerando vetores de faixas e aliquotas fornecidos pela Receita Federal do Brasil, o calculo é feito a partir de uma estrutura genérica: 
  
  IR = 0 x faixas1 + aliquotas1 x (faixas2 - faixas1) + aliquotas2 x (faixas3 - faixas2) + aliquotas3 x (faixas4 - faixas3) + aliquotas4 x (base - faixas4)

  Considerando as variações que ocorrem nas variáveis do ano-calendario vigente, esta funcao foi planejada para facilitar essa alteração ano a ano, de modo que LION precisa apenas de pequenas alterações nos defaults de seus argumentos para se adaptar a mudanças.


Values:
  
  LION retorna o valor numerico do IR a ser pago pelo contribuinte no ano-calendario vigente.


Author:
  
  Paula Zaterka Giroldo
  paulapontogiroldo@gmail.com


References:
  
  Tabela Progressiva para o cálculo anual do Imposto sobre a Renda da Pessoa Física. http://www.receita.fazenda.gov.br/aliquotas/TabProgressiva2012a2015.htm

  MP 644/2014, medida provisoria que altera os valores da tabela do imposto sobre a renda da pessoa física no ano-calendario de 2015. http://www.planalto.gov.br/ccivil_03/_Ato2011-2014/2014/Mpv/mpv644.htm


Examples

# Exemplos genericos
lion (renda = 12000)
lion (renda = 50000)
lion (renda = 50000, 0, 0, 0, 5000)
lion (renda = 100000, 2, 8000)

# Mudanças de ano a ano: IR a partir do exercício de 2014, ano-calendário de 2013. 
lion (1000, 0, 0, 0, 3300, faixas=c(20529.36, 30766.92, 41023.08, 51259.08), aliquotas=c(0.075, 0.15, 0.225, 0.275), pordep = 2156.52, lim.escola = 3230.46)

HELP

05_curso_antigo/r2014/alunos/trabalho_final/paula.giroldo/start.txt · Última modificação: 2021/04/02 13:54 por adalardo