我需要最常见的概率分布w.r.t的PDF / log PDF / CDF的(分析)导数。他们在R中的参数。有没有办法使用这些函数?
gamlss.dist package提供了许多概率分布(code for the normal distribution)的日志PDF的衍生物。 PDFs / CDF有什么类似的东西吗?
编辑:不可否认,PDF的衍生产品可以通过简单的链规则应用从日志PDF的衍生品中获得,但我认为类似的东西不可能CDF ......
答案 0 :(得分:1)
在Maxima中,概率分布位于distrib
附加软件包中,您可以通过load(distrib)
加载该软件包。通过在交互式输入提示符处输入?? cdf_
,可以找到所有cdf函数的文档。
Maxima对函数应用部分评估 - 如果某些变量没有定义值,那么结果是那些变量未定义。因此,您可以说diff(cdf_foo(x, a, b), a)
获得衍生工具a
,例如自由变量x
,a
和b
。
您可以通过grind
生成代码,该代码生成适合Maxima的输出,但其他语言将理解表达式。
有几种方法可以做到这一点。这只是第一次尝试。
(%i1) load (distrib) $
(%i2) fundef (cdf_weibull);
(%o2) cdf_weibull(x, a, b) := if maybe((a > 0) and (b > 0)) = false
then error("cdf_weibull: parameters a and b must be greater than 0")
x a
else (1 - exp(- (-) )) unit_step(x)
b
(%i3) assume (a > 0, b > 0);
(%o3) [a > 0, b > 0]
(%i4) diff (cdf_weibull (x, a, b), a);
a
x
- --
a a a
b log(b) x x log(x)
(%o4) - %e unit_step(x) (--------- - ---------)
a a
b b
(%i5) grind (%);
-%e^-(x^a/b^a)*unit_step(x)*((log(b)*x^a)/b^a-(x^a*log(x))/b^a)$
(%o5) done
(%i6) diff (cdf_weibull (x, a, b), b);
a
x
- --
a
(- a) - 1 a b
(%o6) - a b x %e unit_step(x)
(%i7) grind (%);
-a*b^((-a)-1)*x^a*%e^-(x^a/b^a)*unit_step(x)$
(%o7) done