R语言——正态分布:初学者的友好指南

嘿,未来的R语言大师们!? 今天,我们将深入探索R语言中迷人的正态分布世界。别担心,如果你之前从未编程过——我将作为你这次旅行的友好向导,我们会一步步来。在这个教程结束时,你会对你能仅仅用几行代码做到的事情感到惊讶!

R - Normal Distribution

什么是正态分布?

在我们跳入R语言之前,让我们快速了解一下什么是正态分布。想象你在测量你学校所有学生的身高。你可能发现大多数人身高接近平均水平,而身高非常高或非常矮的人较少。如果你把这些数据画在图表上,它看起来会像一个钟形曲线。这就是正态分布!

在统计学中,我们经常使用正态分布,而R语言有一些出色的函数来帮助我们处理它们。让我们一个一个地探索这些函数。

R语言中的正态分布函数

R语言提供了四个主要函数来处理正态分布。这里有一个快速的概述:

函数 用途
dnorm() 计算在给定点的正态分布的密度(高度)
pnorm() 计算到给定点的累积概率(曲线下的面积)
qnorm() 找到与给定概率对应的值(分位数)
rnorm() 从正态分布生成随机数

现在,让我们深入到这些函数中,看看它们是如何工作的!

dnorm():密度函数

dnorm() 函数帮助我们找到在任意给定点的正态分布曲线的高度。这就像是在问,“这个特定值有多可能出现?”

让我们尝试一个例子:

# 计算标准正态分布中x = 0处的密度
result <- dnorm(0)
print(result)

当你运行这段代码时,你会看到:

[1] 0.3989423

这意味着标准正态分布曲线在x = 0处的高度大约是0.3989。

但是,如果我们想要改变均值或标准差呢?没问题!让我们试试:

# 计算x = 1处的密度,对于均值为2,标准差为0.5的正态分布
result <- dnorm(1, mean = 2, sd = 0.5)
print(result)

输出:

[1] 0.1079819

看看,多么简单!我们只是告诉R我们想要一个均值为2,标准差为0.5的正态分布,然后询问了x = 1处的密度。

pnorm():累积概率函数

现在,让我们继续使用 pnorm()。这个函数计算小于或等于给定点的值的概率。这就像是在问,“得到一个这么低或更低的值的几率是多少?”

这里有一个例子:

# 计算在标准正态分布中,得到一个小于或等于1.96的值的概率
result <- pnorm(1.96)
print(result)

输出:

[1] 0.9750021

这告诉我们,在标准正态分布中,得到一个小于或等于1.96的值的几率大约是97.5%。

有趣的事实:这就是为什么1.96在统计学中经常用于95%置信区间!

让我们尝试另一个具有不同均值和标准差的例子:

# 计算在均值为60,标准差为10的正态分布中,得到一个小于或等于70的值的概率
result <- pnorm(70, mean = 60, sd = 10)
print(result)

输出:

[1] 0.8413447

这意味着在这个分布中,得到一个小于或等于70的值的几率大约是84.1%。

qnorm():分位数函数

qnorm()pnorm() 的反函数。不是给它一个值然后询问概率,而是给它一个概率然后询问值。这就像是在说,“什么值会给我这个特定的概率?”

让我们试一试:

# 在标准正态分布中,找到一个累积概率为0.95的值
result <- qnorm(0.95)
print(result)

输出:

[1] 1.644854

这告诉我们,在标准正态分布中,95%的值低于1.645。

我们也可以使用不同的均值和标准差:

# 在均值为100,标准差为15的正态分布中,找到一个累积概率为0.99的值
result <- qnorm(0.99, mean = 100, sd = 15)
print(result)

输出:

[1] 134.8745

所以,在这个分布中,99%的值低于134.87。

rnorm():生成随机数

最后但同样重要的是,我们有 rnorm()。这个函数就像一个遵循正态分布规则的魔法数字生成器。它在模拟和创建测试数据时非常实用。

下面是如何使用它的例子:

# 从标准正态分布生成5个随机数
random_numbers <- rnorm(5)
print(random_numbers)

输出(你的数字将是不同的):

[1] -0.56047565 -0.23017749  1.55870831  0.07050839  0.12928774

我们也可以指定不同的均值和标准差:

# 从均值为50,标准差为10的正态分布生成5个随机数
random_numbers <- rnorm(5, mean = 50, sd = 10)
print(random_numbers)

输出(你的数字将是不同的):

[1] 52.39086 46.08371 47.92569 62.36229 45.45923

这难道不酷吗?仅仅用一行代码,我们就可以生成我们想要的任意数量的随机数,遵循我们指定的任何正态分布!

总结

就这样,各位!我们一起穿越了R语言中正态分布的土地,一路上探索了四个强大的函数。记住,熟能生巧,所以不要害怕用这些函数做实验。尝试不同的值,绘制结果,看看会发生什么!

这里给你一个小挑战:尝试使用 rnorm() 生成1000个随机数,然后用 hist() 绘制这些数字的直方图。你将看到正态分布在你眼前生动起来!

快乐编码,愿正态分布与你同在!???

Credits: Image by storyset