1. (binomial1) Seja o experimento aleatório consiste de fazer n ensaios (de Bernoulli) de modo que 1) os ensaios sejam independentes, 2) que o resultado seja dicotômico (sucesso e fracasso) e 3) que a probabilidade de sucesso p seja constante. A variável aleatória X, que o número de ensaios com resultado do tipo sucesso, tem distribuição binomial com parâmetros 0 e n in N^*. A função de probabilidade de X é
p(x)=binomnx p^x(1-p)^n-x, x=0,1, ldots
Escreva uma função para calcular p(x). Ao implementar, inclua proteções, com mensagens de erro, contra valores fora do espaço paramétrico ( p e n ) ou suporte ( x ).

Passo 1

O enunciado pede uma função para computar a probabilidade de um ponto da distribuição binomial com parâmetros n e p, ou seja, a função de massa de probabilidade
p(x)=binomnxp^x(1-p)^n-x,
onde precisamos validar se n é um inteiro positivo, p está em (0,1) e x é um inteiro em [0,n].

Passo 2

Definimos a assinatura da função com três argumentos: x (número de sucessos), n (número de ensaios) e p (probabilidade de sucesso).
Implementamos as verificações de erro:
  • n deve ser inteiro e n\ge1
  • p deve satisfazer 0<p<1
  • x deve ser inteiro e 0\le x\le n
    Caso alguma condição falhe, usamos stop() para lançar mensagem de erro.

Passo 3

Se todos os parâmetros estiverem válidos, calculamos o coeficiente binomial binomnx usando a função choose(n, x) do R, e depois multiplicamos por p^x(1-p)^n-x para obter a probabilidade.
Por fim, retornamos o valor calculado.
A função resultante já incorpora as proteções contra valores fora do espaço paramétrico e do suporte.

Resposta

binomial_pmf <- function(x, n, p) {
if (!is.numeric(n) || n != as.integer(n) || n < 1) {
stop(“Argumento ‘n’ deve ser inteiro positivo.”)
}
if (!is.numeric§ || p <= 0 || p >= 1) {
stop(“Argumento ‘p’ deve estar em (0,1).”)
}
if (!is.numeric(x) || x != as.integer(x) || x < 0 || x > n) {
stop(“Argumento ‘x’ deve ser inteiro entre 0 e n.”)
}
return(choose(n, x) * p^x * (1 - p)^(n - x))
}

Exercícios relacionados