给出以下功能:
f(x) = (1/2*pi)(1/(1+x^2/4))
如何识别它的分布并在R?
中编写此分配函数答案 0 :(得分:5)
所以现在这是你的功能(希望你知道如何编写R函数;如果没有,请检查writing your own function):
f <- function (x) (pi / 2) * (1 / (1 + 0.25 * x ^ 2))
f
在(-Inf, Inf)
上定义,因此此范围的积分会给出无限积分。幸运的是,它以Inf
的速度接近x ^ (-2)
,因此积分定义明确,可以计算:
C <- integrate(f, -Inf, Inf)
# 9.869604 with absolute error < 1e-09
C <- C$value ## extract integral value
# [1] 9.869604
然后你要标准化f
,因为我们知道概率密度应该整合到1:
f <- function (x) (pi / 2) * (1 / (1 + 0.25 * x ^ 2)) / C
您可以通过以下方式绘制其密度:
curve(f, from = -10, to = 10)
答案 1 :(得分:1)
既然我有可能的分发函数,我想知道如何使用这个新的分布函数创建说
SELECT e.FLDLNAME, e.FLDFNAME, e.FLDREC_NUM, t.FLDDATE AS [TUBER Date], t.FLDCLASS AS [TUBER Result], MAX(x.FLDDATE) AS [Most Recent XRay Date] FROM EMPLOYEE e LEFT OUTER JOIN TUBER t ON e.FLDREC_NUM = t.FLDEMPLOYEE LEFT OUTER JOIN PHYSLOG x ON e.FLDREC_NUM = x.FLDEMPLOYEE WHERE x.FLDTYPE = 'CXR' GROUP BY e.FLDLNAME, e.FLDFNAME, e.FLDREC_NUM, t.FLDDATE, t.FLDCLASS
的随机样本?
一个偏离主题的问题,但没有你的新线程就可以回答。有用,因为它变得微妙。
比较
n = 1000
所以我认为set.seed(0); range(simf(1000, 1e-2))
#[1] -56.37246 63.21080
set.seed(0); range(simf(1000, 1e-3))
#[1] -275.3465 595.3771
set.seed(0); range(simf(1000, 1e-4))
#[1] -450.0979 3758.2528
set.seed(0); range(simf(1000, 1e-5))
#[1] -480.5991 8017.3802
是合理的。我们可以绘制样本,制作(缩放)直方图和叠加密度曲线:
e = 1e-2