d, p, q , r - Quais as relações matemáticas entre estas funções

Olá a todos da lista, Gostaria de uma referência para estudar como são obtidas as funções d, p, q, r. A ideia é implementar as funções p, q, r à partir de uma função p particular. Obrigado

Creio que você vai ter que baixar o código fonte do R e dar uma olhada no conteúdo da pasta "src/nmath".
dnorm function (x, mean = 0, sd = 1, log = FALSE) .Internal(dnorm(x, mean, sd, log)) <bytecode: 0x2497258> <environment: namespace:stats>
pnorm function (q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) .Internal(pnorm(q, mean, sd, lower.tail, log.p)) <bytecode: 0x248bad0> <environment: namespace:stats>
qnorm function (p, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) .Internal(qnorm(p, mean, sd, lower.tail, log.p)) <bytecode: 0x2499d08> <environment: namespace:stats>
rnorm function (n, mean = 0, sd = 1) .Internal(rnorm(n, mean, sd)) <bytecode: 0x248a5c0> <environment: namespace:stats>
Por exemplo, a dnorm: /* * Mathlib : A C Library of Special Functions * Copyright (C) 1998 Ross Ihaka * Copyright (C) 2000 The R Development Core Team * Copyright (C) 2003 The R Foundation * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, a copy is available at * http://www.r-project.org/Licenses/ * * SYNOPSIS * * double dnorm4(double x, double mu, double sigma, int give_log) * {dnorm (..) is synonymous and preferred inside R} * * DESCRIPTION * * Compute the density of the normal distribution. */ #include "nmath.h" #include "dpq.h" double dnorm4(double x, double mu, double sigma, int give_log) { #ifdef IEEE_754 if (ISNAN(x) || ISNAN(mu) || ISNAN(sigma)) return x + mu + sigma; #endif if(!R_FINITE(sigma)) return R_D__0; if(!R_FINITE(x) && mu == x) return ML_NAN;/* x-mu is NaN */ if (sigma <= 0) { if (sigma < 0) ML_ERR_return_NAN; /* sigma == 0 */ return (x == mu) ? ML_POSINF : R_D__0; } x = (x - mu) / sigma; if(!R_FINITE(x)) return R_D__0; return (give_log ? -(M_LN_SQRT_2PI + 0.5 * x * x + log(sigma)) : M_1_SQRT_2PI * exp(-0.5 * x * x) / sigma); /* M_1_SQRT_2PI = 1 / sqrt(2 * pi) */ } Creio que todas as distribuições (mas não tenho certeza) ficam nessa pasta: /R-dev/src/nmath Abs, -- ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ Jose Claudio Faria UESC/DCET/Brasil joseclaudio.faria at gmail.com ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\

Obrigado pela resposta amigo, mas antes de ver os códigos gostaria de entender como obter as equações... Usando como ex a distribuição exponencial, a PDF (dexp) é ke^{-kx} e a CDF (pexp) é obtida integrando a PDF, o que resulta em 1-e^{kx}. Considerando que conheço a PDF, como obtenho qexp e a rexp? 2011/8/21 Jose Claudio Faria <joseclaudio.faria@gmail.com>:
Creio que você vai ter que baixar o código fonte do R e dar uma olhada no conteúdo da pasta "src/nmath".
dnorm function (x, mean = 0, sd = 1, log = FALSE) .Internal(dnorm(x, mean, sd, log)) <bytecode: 0x2497258> <environment: namespace:stats>
pnorm function (q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) .Internal(pnorm(q, mean, sd, lower.tail, log.p)) <bytecode: 0x248bad0> <environment: namespace:stats>
qnorm function (p, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) .Internal(qnorm(p, mean, sd, lower.tail, log.p)) <bytecode: 0x2499d08> <environment: namespace:stats>
rnorm function (n, mean = 0, sd = 1) .Internal(rnorm(n, mean, sd)) <bytecode: 0x248a5c0> <environment: namespace:stats>
Por exemplo, a dnorm: /* * Mathlib : A C Library of Special Functions * Copyright (C) 1998 Ross Ihaka * Copyright (C) 2000 The R Development Core Team * Copyright (C) 2003 The R Foundation * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, a copy is available at * http://www.r-project.org/Licenses/ * * SYNOPSIS * * double dnorm4(double x, double mu, double sigma, int give_log) * {dnorm (..) is synonymous and preferred inside R} * * DESCRIPTION * * Compute the density of the normal distribution. */
#include "nmath.h" #include "dpq.h"
double dnorm4(double x, double mu, double sigma, int give_log) { #ifdef IEEE_754 if (ISNAN(x) || ISNAN(mu) || ISNAN(sigma)) return x + mu + sigma; #endif if(!R_FINITE(sigma)) return R_D__0; if(!R_FINITE(x) && mu == x) return ML_NAN;/* x-mu is NaN */ if (sigma <= 0) { if (sigma < 0) ML_ERR_return_NAN; /* sigma == 0 */ return (x == mu) ? ML_POSINF : R_D__0; } x = (x - mu) / sigma;
if(!R_FINITE(x)) return R_D__0; return (give_log ? -(M_LN_SQRT_2PI + 0.5 * x * x + log(sigma)) : M_1_SQRT_2PI * exp(-0.5 * x * x) / sigma); /* M_1_SQRT_2PI = 1 / sqrt(2 * pi) */ }
Creio que todas as distribuições (mas não tenho certeza) ficam nessa pasta: /R-dev/src/nmath
Abs, -- ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ Jose Claudio Faria UESC/DCET/Brasil joseclaudio.faria at gmail.com ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
participantes (2)
-
. .
-
Jose Claudio Faria