单个连续随机变量位于区间 [55,100] 内的概率
The probability that a single continuous random variable lies in an interval [55,100]
有人要求我找出学生通过考试的概率(如果分数为 55 ≤ X ≤ 100,他会这样做)并给出密度函数(见图:
我已经定义了我的限制并集成了密度函数,这可以在 R 中的以下代码块中看到
f1 <- function(x){
-(x/100)+(4*0.5/5)+(1/5)
}
integrate(f1,(80*p-25),(80*p+20))
我在定义f1时插入了0.5而不是p。如果学生没有做好充分准备,我会得到 27,76% 的答案 (p=0.5)
我怀疑这样做是否正确,我只使用了 f(x) 的第二个表达式而没有考虑第一个表达式,当我在在线积分计算器中输入解时,我得到的结果要低得多价值。另外,我不确定极限表达式 a 和 b 是否定义正确。我想我想知道如何从具有多个表达式的密度函数中推导出概率以及如何处理这些限制。
这可以如下所示完成:
p <- function(x, p = 0.5){
i <- (80*p) < x & x <= (80*p + 10)
j <- (80*p + 10) < x & x <= (80*p + 20)
(x/100 - 4*p/5)^i * (-x/100 + 4*p/5 + 1/5)^j * 0^(1-i-j)
}
integrate(p, 55, 100)
0.1249993 with absolute error < 5.4e-05
您还可以将 p
定义为:
p1 <- function(x, p = 0.5){
i <- (80*p) < x & x <= (80*p + 10)
j <- (80*p + 10) < x & x <= (80*p + 20)
(x/100 - 4*p/5) * i + (-x/100 + 4*p/5 + 1/5) * j + 0 * (1-i-j)
}
integrate(p1, 55, 100)
0.1249993 with absolute error < 5.4e-05
密度函数有点粗糙,但您可以通过首先定义一个向量 x(范围从 0 到 100)然后有条件地计算分数作为 x 和 p 的函数来轻松解决它。
只需将分数默认设置为 0
,并用作业中给出的函数替换某些条件适用的值:
x = seq(0,100,.1)
p = 0.5
score = rep(0,length(x))
score[80*p<x & x <= (80*p+10)]=x[80*p<x & x <= (80*p+10)]/100-4*p/5
score[(80*p + 10)<x & x <= (80*p+20)]=-x[(80*p + 10)<x & x <= (80*p+20)]/100+4*p/5+1/5
您现在有一个可以绘制的密度函数:
plot(x,score,type="l")
得分为 55 或更高的概率是 55 之后的曲线下面积除以曲线下总面积。幸运的是,曲线下的面积可以通过对值求和得到:
prob55 = sum(score[x>=55])/sum(score)
prob55
本例中,结果为12.5%
虽然Onyambu的解法是正确的,但我觉得还是写成这样比较好:
f <- function(x,p = 0.5){
dplyr::case_when(
# Condition -------- Function
(80*p) < x & x <= (80*p + 10) ~ x/100 - 4*p/5,
(80*p + 10) < x & x <= (80*p + 20) ~ -x/100 + 4*p/5 + 1/5,
TRUE ~ 0
)
}
原因是:
- 更容易阅读
- 不需要 reader 了解强制转换的工作原理。
- 它更具可扩展性:不会随着区域数量的增加而变得更糟。
有人要求我找出学生通过考试的概率(如果分数为 55 ≤ X ≤ 100,他会这样做)并给出密度函数(见图:
我已经定义了我的限制并集成了密度函数,这可以在 R 中的以下代码块中看到
f1 <- function(x){
-(x/100)+(4*0.5/5)+(1/5)
}
integrate(f1,(80*p-25),(80*p+20))
我在定义f1时插入了0.5而不是p。如果学生没有做好充分准备,我会得到 27,76% 的答案 (p=0.5)
我怀疑这样做是否正确,我只使用了 f(x) 的第二个表达式而没有考虑第一个表达式,当我在在线积分计算器中输入解时,我得到的结果要低得多价值。另外,我不确定极限表达式 a 和 b 是否定义正确。我想我想知道如何从具有多个表达式的密度函数中推导出概率以及如何处理这些限制。
这可以如下所示完成:
p <- function(x, p = 0.5){
i <- (80*p) < x & x <= (80*p + 10)
j <- (80*p + 10) < x & x <= (80*p + 20)
(x/100 - 4*p/5)^i * (-x/100 + 4*p/5 + 1/5)^j * 0^(1-i-j)
}
integrate(p, 55, 100)
0.1249993 with absolute error < 5.4e-05
您还可以将 p
定义为:
p1 <- function(x, p = 0.5){
i <- (80*p) < x & x <= (80*p + 10)
j <- (80*p + 10) < x & x <= (80*p + 20)
(x/100 - 4*p/5) * i + (-x/100 + 4*p/5 + 1/5) * j + 0 * (1-i-j)
}
integrate(p1, 55, 100)
0.1249993 with absolute error < 5.4e-05
密度函数有点粗糙,但您可以通过首先定义一个向量 x(范围从 0 到 100)然后有条件地计算分数作为 x 和 p 的函数来轻松解决它。
只需将分数默认设置为 0
,并用作业中给出的函数替换某些条件适用的值:
x = seq(0,100,.1)
p = 0.5
score = rep(0,length(x))
score[80*p<x & x <= (80*p+10)]=x[80*p<x & x <= (80*p+10)]/100-4*p/5
score[(80*p + 10)<x & x <= (80*p+20)]=-x[(80*p + 10)<x & x <= (80*p+20)]/100+4*p/5+1/5
您现在有一个可以绘制的密度函数:
plot(x,score,type="l")
得分为 55 或更高的概率是 55 之后的曲线下面积除以曲线下总面积。幸运的是,曲线下的面积可以通过对值求和得到:
prob55 = sum(score[x>=55])/sum(score)
prob55
本例中,结果为12.5%
虽然Onyambu的解法是正确的,但我觉得还是写成这样比较好:
f <- function(x,p = 0.5){
dplyr::case_when(
# Condition -------- Function
(80*p) < x & x <= (80*p + 10) ~ x/100 - 4*p/5,
(80*p + 10) < x & x <= (80*p + 20) ~ -x/100 + 4*p/5 + 1/5,
TRUE ~ 0
)
}
原因是:
- 更容易阅读
- 不需要 reader 了解强制转换的工作原理。
- 它更具可扩展性:不会随着区域数量的增加而变得更糟。