#学习如何构造R函数
#难度提升
#构造统计分布
#避免命名冲突
#例如,定义函数f01为参数为a的指数分布的密度函数,
#定义f02为该指数分布的分布函数,取a=1/5,进行计算,
#可以看出,三种计算结果基本一致.
f01 = function(x,a){a * exp(-a * x)}
f01(5,1/5)
f02 = function(x,a){1 - exp(-a * x)}
c = 3;
c = f02();c
#现成的指数分布密度函数
dexp()
#指数分布密度函数
pef.exp = function(x,a){
f = a * exp(- a * x) * (x > 0)
return (f)}
dexp(3,1/5)
pef.exp(-3,1/5)
f03 = function(x){(1/5) * exp(-(1/5) * x)}
#integrate针对一元函数做积分
integrate(f03,lower = 0,upper = 5)#对f03在(0,3)上求定积分
#应用:
1)罕见的概率分布
1.次序统计量
2.最大,最小值
3.艾拉姆伽
#为了解指数分布的次序统计量的一些统计特征,
并沿用上面编写好的d( )函数.
假设总体服从参数为0.01的指数分布,
则它的分布函数可表示为pexp(x,0.01),
密度函数可表示为dexp(x,0.01),
取样本容量为5的样本并描述这5个次序统计量的统计性质.
d = function(n,i){i * choose(n,i)}
f.exp = function(n,i,x,a)
{ Fx = pexp(x,a)
f = d(n,i) * Fx ^ (i - 1) * (1 - Fx) ^ (n - i) * dexp(x,a)
return (f)
}
z = seq(0,500,0.05)
plot(z,f.exp(5,1,z,0.01),type = "l",xlim = range(z),ylim = c(0,0.02))
lines(z,f.exp(5,2,z,0.01),col=2)
lines(z,f.exp(5,3,z,0.01),col=3)
lines(z,f.exp(5,4,z,0.01),col=4)
lines(z,f.exp(5,5,z,0.01),col=5)
legend(x=420,y=0.02,legend=c("i=1", "i=2","i=3","i=4","i=5"),lty=1,col=c(1:5))
#如果要求第三个次序统计量寿命未超过100 的概率
F = function(x)#将f.exp()变为一元函数,另外三个参数固定
{ f.exp(5,3,x,0.01)}
integrate(F,0,100)
G = function(m,k,t,y)
{
#内嵌函数
fi.exp = function(x,n = m,i = k,a = t)
{ Fx = pexp(x,a)
f = d(n,i) * Fx ^ (i - 1) * (1 - Fx) ^ (n - i) * dexp(x,a)
return (f)
}
Fi.exp = function(x)
{ F = fi.exp(x)
return (F)
}
J = integrate(Fi.exp,0,y)
return (J)
}
G(10,5,0.2,4)
#例子4.1.2
fw = function(n,i,x)
{ d(n,i) * dweibull(x,5,10) * (pweibull(x,5,10))^(i - 1) * (1 - pweibull(x,5,10)) ^ (n - i)
}
F1 = function(x){fw(10,3,x)}
G1 = function(y){integrate(F1,0,y)}
q1 = G1(7);q1