01概率分布


各类概率分布的代码

# Normal distribution
dnorm(seq( -3, 3, by = 0.1), mean = 0, sd = 1)
pnorm(seq( -3, 3, by = 0.1), mean = 0, sd = 1)
qnorm(seq( 0.1, 0.9, by = 0.1), mean = 0, sd = 1)
rnorm(10, mean = 0, sd = 1)


# Binomial distribution
dbinom(x, N, p)
pbinom(x, N, p)
qbinom(q, N, p)
rbinom(n, N, p)


rchisq(100, df = 3) # chi square distribution
runif(x, min, max) # Uniform distribution
rnbinom(10, mu=3, theta=2) # Negative binomial distribution
rpois(x, lambda) # Poisson distribution
rgamma(100, shape = 3, scale = 2) # Gamma distribution
rweibull(100, shape = 3, scale = 2) # Weibull distribution


# F distribution
df(x, df1, df2, log = FALSE)
pf(q, df1, df2, lower.tail = TRUE, log.p = FALSE)
qf(p, df1, df2, lower.tail = TRUE, log.p = FALSE)
rf(n, df1, df2)

一、离散分布

1 二项分布

二项分布的条件。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

随机生成100个数(1和0),看100数中1的累计值,重复4次。

N = 100 # number of trials
p = 0.5 # probability of success
N.EXP = 5

trial = numeric(N)
BN = numeric(N.EXP)

trial.1 = sample(c(1, 0), 1, p=c(p, 1-p))

for (j in 1:N.EXP) {
  for (i in 1:N){
    trial[i] = sample(c(1, 0), 1, p=c(p, 1-p))}
  X = sum(trial)
  BN[j] = X
}

BN
hist(BN)
mean(BN)
var(BN)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

# R function 骰子为5的概率
p.x <- function(n, p, x)
{gamma(n+1)/gamma(x+1)/gamma(n-x+1)*p^x*(1-p)^(n-x)}
p.x(n=10, p=1/6, x=5)

!外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

公式推导:https://zhuanlan.zhihu.com/p/89366172

不同参数的概率密度函数,当概率函数的p值不一样

binomial.PDF = dbinom(0:10, 10, 0.5)
plot(binomial.PDF * 10, type = 'l', ylim = c(0, 4.5),
xlab = "Number of success", ylab = "Frequency",
main = paste('dbinom (0:10, 10, P) # P = 0.1, 0.2, ..., 0.9', sep = ''))

for (i in seq(0.1, 0.9, by = 0.1)) {
  binomial.PDF = dbinom(0:10, 10, i)
  lines(binomial.PDF * 10, type ='l', # 线的颜色
  col = rainbow(9)[i*10], lwd=2) # 设置不同的颜色类型
  
  legend(-0.3 + 11 * i, 4.5,
  paste('p =', i, sep = " "), # 图例的设置
  text.col = rainbow(9)[i * 10], # 颜色的设置
  box.lty = 0, cex = 0.8) 
}

2 poisson distribution

它是描述小概率的事件的情况。例如,婴儿的死亡率。

是个离散分布,有标准值,有p值。没有方差?

这样也可以算出概率密度函数。

0,1,2分布的情况

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一般用均值来表示朗姆大,用模型来进行比较,最后得出它的结果。

这个时候算n特别大,p特别小的情况。

查看网上的情况
在这里插入图片描述
link:参考的链接
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

# R script
x1 = rep(0, 242)
x2 = rep(1, 148)
x3 = rep(2, 49)
x4 = rep(3, 15)
x5 = rep(4, 4)
x = c(x1, x2, x3, x4, x5)
sum(x) # 307
mean(x) # 0.67
var(x) # 0.738
# R script
options(digits = 3) # 控制有效打印的数字
dpois(0:4, 0.67) #这里的唯一参数值为0.67,计算0:4所有可能的柏松分布的值。

柏松和二项分布的比较。

# Poisson distribution
poisson = dpois(1:10, 1.25)
plot(poisson, type='b', lwd=2, xlab="X", ylab="Probability")
# bionomial distribution
bn = dbinom(1:10, 150, 0.008)
lines(bn, col="blue", lwd=2)

随着lambda的值的变化,柏松分布图像的变化。

lambda <- 1
poisson.d <- dpois(seq(1,20), lambda)
plot(poisson.d, xlab = 'X', ylab="p", type='l')
for (lambda in 1:10){
poisson.d <- dpois(seq(1,20), lambda)
lines(poisson.d, type = 'l',
col = rainbow(10)[lambda])
legend(lambda, 0.4-lambda/45,
paste('lambda =', lambda, sep=' '),
text.col = rainbow(10)[lambda],
box.lty = 0, cex = 0.5)}

柏松分布的性质。
在这里插入图片描述

3 负二项分布

在发生指定(非随机)次数的失败(表示为 r)之前,一系列伯努利试验中的成功次数。

负二项分布的特点。
在这里插入图片描述

size <- seq(1, 10, len = 10); prob = seq(0.01, 1, len = 20)
p.nb <- matrix(apply(expand.grid(size, prob), 1,
function(z) dnbinom(5, size = z[1], prob = z[2])), # x=5
nrow = length(size), ncol = length(prob))
colnames(p.nb) <- round(prob, 2); rownames(p.nb) <- size
image(size, prob, p.nb, col = terrain.colors(12), xlab = 'Size', ylab = 'p')
contour(size, prob, p.nb, add = TRUE)

4 离散分布总结

三大离散分布:数据都是整数。以及各项分布的均值和方差。

在这里插入图片描述

怎么去判断,用那个分布

在这里插入图片描述

二、连续分布

几种比较重要的连续分布。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1 均匀分布

均匀分布,
在这里插入图片描述

par(mfrow = c(2,1), mar = c(4,4,2,2))
plot(c(1,1,3,3), c(0,0.5,0.5,0), type='l', xlim=c(0,4), ylim=c(0,1), xlab='x', ylab='p', cex=2, xaxt='n')

mtext(c('a','b'), side = 1,at = c(1,3)); legend(0.3, 0.6, '1/(b-a)', box.lty = 0, cex = 1, bty='n')

polygon(c(1,1, 3,3), c(0,0.5,0.5,0), col='grey')

plot(c(1,3),c(0,1), type='l', xlim=c(0,4), ylim=c(0,1), xlab='x', ylab='p', cex=2, xaxt='n')

polygon(c(1,3,3), c(0,0,1), col='grey'); mtext(c('a','b'), side=1, at = c(1,3))

2 正态分布

在这里插入图片描述

pnorm(2.58)# 这块是计算的累积概率密度的情况。
pnorm(2.58) # 这块在GIS中对应的是Z值
# 设置随机种子
set.seed(123)

# 生成正态分布数据
mean <- 0
sd <- 1
data <- rnorm(1000, mean, sd)

mean2 <- 0
sd2 <- 2

# 绘制直方图
hist(data, breaks=30, probability=TRUE, main="RNORM", xlab="VALUE", col="lightblue")

# 添加正态分布曲线
curve(dnorm(x, mean, sd), add=TRUE, col="red", lwd=2)
curve(dnorm(x, mean2, sd2), add=TRUE, col="blue", lwd=2)


# 标注均值和标准差
abline(v=mean, col="blue", lwd=2, lty=2)
text(mean, 0.3, paste("EX =", mean), pos=4)
text(mean + sd, 0.25, paste("VAR =", sd), pos=4)

正态总结:

标准差越小,实施上,更容易拒绝原假设,从而得到想要的结果。(如果想要得到小p值则需要,在均值不变的情况下,需要控制标准差最小。)数量越多标准差越小??这个还需要证明。
在这里插入图片描述

整体

中心极限定律:把所有分布的结果的平均值计算出来,整体结果是正态分布。平均值永远是正态分布。正态性和每次所选的数量有关。

判断数据是否正态

1 方法一

一个是p值

x = c(rnorm(20), 1:6)
shapiro.test(x)

library(car)
qqPlot(x)
2 方法二

与均值相关,另一个就是plot,图形的方式
在这里插入图片描述

3.卡方分布

将正态分布进行平方事实上就是卡方分布。

在这里插入图片描述

卡方分布的情况。

plot(dchisq(seq(0.1, 10, by=0.1), df = 1), type='l',
xlab = 'x', xlim = c(0,10))

卡方分布的自由度越大,其越平稳。
在这里插入图片描述

卡方分布有一个自由度,自由度可以根据数据的加和来进行分析。下面是卡方分布的方差。

在这里插入图片描述

4 F分布

F分布是通过比值来计算分布的情况。
在这里插入图片描述

卡方分布的一些统计数。

在这里插入图片描述

组间分布和组内分布,一个是分子的自由度和一个分子

mode 众数

coefficient of 变异系数(标准差除以平均值)

在这里插入图片描述

X = seq(0.1, 3, length=30); Y = df(X, 1,1)
par(mfrow=c(2,2))
plot(X, Y, type='n', xlab = 'X', ylab = 'P', xlim=c(0,2), main="DF1=1, DF2=1:10")
for (i in 1:10) lines(X, df(X, 1, i), col=rainbow(10)[i])
plot(X, Y, type='n', xlab = 'X', ylab = 'P', xlim=c(0,2), main="DF1=1:10, DF2=1")
for (i in 1:10) lines(X, df(X, i, 1), col=rainbow(10)[i])
plot(X, Y, type='n', xlab = 'X', ylab = 'P', xlim=c(0,2), main="DF1=10, DF2=1:10")
for (i in 1:10) lines(X, df(X, 10, i), col=rainbow(10)[i])
plot(X, Y, type='n', xlab = 'X', ylab = 'P', xlim=c(0,2), main="DF1=1:10, DF2=10")
for (i in 1:10) lines(X, df(X, i, 10), col=rainbow(10)[i])

5 指数分布

在这里插入图片描述

6 gamma分布

在这里插入图片描述

在这里插入图片描述

7 Weibull 分布

在这里插入图片描述

练习

obs = c(7,5,6,6,7,5,3,4,5,8,2,4,5,6,7,6,4,5,9,3,6,4)
hist(obs, freq = F)
mean = mean(obs)
SD = sd(obs)
x = seq(min(obs), max(obs), by = .1)
norm = dnorm(x, mean = mean, sd = SD)

lines(x, norm, type = 'l', col = 'red')
abline(v=c(qnorm(.025, mean, SD), qnorm(.975, mean, SD)), col = 'brown')
abline(v=c(mean - 2*SD, mean + 2*SD), col = 'blue')

x = rnorm(100)
mean(x)
sd(x)
var(x)
min(x)
max(x)
median(x)
range(x)
quantile(x)
summary(x)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Q一件事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值