2022年5月23日星期一

R in Action Chapter 5 (二) 概率函数

概率函数

概率函数通常用来生成特征已知的模拟数据,以及在用户编写的统计函数中计算概率值。

概率函数的格式如下:

[dpqr]distribution_abbreviation()

对上述格式的说明如下:

  • d = 密度函数(density)

  • p = 分布函数(distribution function)

  • q = 分位数函数(quantile function)

  • r = 生成睿集数(随机偏差)

image-20220523162359453

下面一正态分布的有关函数,了解这些函数的使用方法。

如果不指定一个均值和一个标准差,则函数将假定其为标准正态分布(均值为0,标准差为1)。密度函数(dnorm)、分布函数(pnorm)、分位数函数(qnorm)和随机数生成函数(rnorm)函数示例如下:

#正态分布函数
x <- pretty(c(-3,3), 30)
y <- dnorm(x)
plot(x, y,
type = "1",
xlab = "NormalDeviate",
ylab = "density"
yaxs = "i")
pnorm(1.96)

1.设定随机数种子

可以通过函数set.seed() 显式指定这个种子,让结果可以重现

下面代码给出一个示例,其中函数runif()用来生成0-1去见上服从均匀分布的伪随机数。

代码清单5-2 生成服从正态分布的伪随机数
runif(5)
runif(5)
set.seed(134)
runif(5)
set.seed(134)
runif(5)

2.生成多元正态数据

在模拟研究和蒙特卡洛方法中,你经常需要获取来自给定均值向量和协方差阵的多元正态分布数据。MASS包中的mvrnorm()函数可以让这个问题变得很容易,其调用格式为

mvnorm(n, mean, sigma)

对上述格式解释如下

  • n:你想要的样本大小

  • mean:均值向量

  • sigma:方差-协方差矩阵(或相关矩阵)

下面代码将实现从一个三元正态分布中抽取500个观测

#打码清单5-3 生成服从多元正态分布的数据
library(MASS)
options(digits = 3)
set.seed(1234)
mean <-c(230.7, 146.7, 3.6)
sigma <- matrix(c(15360.8, 6721.2, -47.1, 6721.2, 4700.9, -16.5, -47.1, -16.5, 0.3), nrow = 3, ncol = 3)
mydata <- mvrnorm(500,mean, sigma)
mydata <- as.data.frame(mydata)
names(mydata) <- c("y", "x1", "x2")
dim(mydata)
head(mydata, n = 10)

没有评论: