(多元)偏正态分布、正态分布、对数正态分布的随机数的产生(R语言)
目录
- 0引言
- 1、函数名
- 2、示例
- 2.1正态分布随机数
- 2.2偏正态分布
- 2.3对数正态分布
- 写在最后的话
0引言
最近在看偏正态分布相关的东西,偏正态分布的定义形式还是挺多样的,在偏态分布及其数字特征(R语言可视化)中我介绍的最初的一种定义。在平时做模型做随机模拟的时候的需要产生随机数来检验自己模型估计的有效性,我们可以通过各种分层表示用已知的分布去近似,也可以通过筛法使用均匀分布去生成、也可以用MCMC去采样。但是最为一个专业的统计软件——R语言肯定是有内置函数或者内置包去做的。大家感兴趣原理的也可以自行打开R函数查看。
本文的主要目的是介绍R语言内部的产生下面分布的随机数的函数。
– 一元正态分布随机数
– 一元偏正态分布随机数
– 一元对数正态随机数
– 多元正态分布随机数
– 多元偏正态分布随机数
– 多元对数正态随机数
1、函数名
对于熟悉R语言的人只有函数名字和包名即可,下面列出具体名字。
维度 | 分布 | 函数 | 包 |
---|---|---|---|
一维度 | 正态分布 | rnorm | stats |
一维度 | 偏正态分布 | rsn | sn |
一维度 | 对数正态 | rlnorm | stats |
多维度 | 正态分布 | mvrnorm | MASS |
多维度 | 偏正态分布 | rmsn | sn |
多维度 | 对数正态 | mvlognormal | MethylCapSig |
但是对于很多R小白的科研大佬来说只有一个名字是比较浪费时间的,下面给出具体案例。
2、示例
先把该安装的包岸上并且载入,后面有备注大家按需安装载入。
install.packages("MethylCapSig") # 多元对数正态包
install.packages("MASS") # 多元正态分布包
install.packages("sn") # 偏态数据包
library(MASS)
library(sn)
library(MethylCapSig)
2.1正态分布随机数
这块介绍如何生成一元和多元的正态分布随机数。生成正态分布的随机数的函数是rnorm
,多元正态随机数用mvrnorm
。
#生成n个均值0标准差1的正态随机数
> n = 10
> rnorm(n, mean = 0, sd = 1)[1] 0.6035027 -0.9081701 1.5303255 0.3761588 -1.6406858 -1.5728766[7] -1.6586157 0.8287051 1.7688131 1.1472097
mvrnorm(n = 1, mu, Sigma, tol = 1e-6, empirical = FALSE, EISPACK = FALSE)
# 生成均值为mu,协方差矩阵为Sigma的10次观测的多元正态随机数
> mu <- rep(0, 2)
> mu
[1] 0 0
> Sigma <- matrix(c(5,1,1,2),2,2)
> Sigma[,1] [,2]
[1,] 5 1
[2,] 1 2
> mvrnorm(n, mu, Sigma)[,1] [,2][1,] 0.3458454 0.3552218[2,] -4.9145503 -2.2932391[3,] 2.3285543 1.7957570[4,] 2.6422543 1.4493042[5,] -2.0447422 -0.5195390[6,] -0.5682730 -0.1557601[7,] -0.0560933 0.6941458[8,] 3.5873361 2.1324344[9,] -0.3522617 -1.0535145
[10,] 1.9490186 -1.7155158
2.2偏正态分布
这块介绍如何生成一元和多元的偏正态分布随机数。生成偏正态分布的随机数的函数是rsn
,多元正态用rmsn
。
rsn(n=1, xi=0, omega=1, alpha=0, tau=0, dp=NULL)
# 生成10个位置参数为5,标准差为2,偏度为5的一元偏正态分布
> n = 10
> rsn(n, 5, 2, 5)[1] 6.366628 4.622272 4.973537 5.716082 6.438601 7.489781 5.034990 5.762948[9] 9.547775 8.470482
attr(,"family")
[1] "SN"
attr(,"parameters")
[1] 5 2 5 0
rmsn(n=1, xi=rep(0,length(alpha)), Omega, alpha, tau=0, dp=NULL)
# 生成多元偏态分布,均值向量xi,协方差矩阵,偏度向量 alpha
> xi <- c(0, 0)
> xi
[1] 0 0
> Omega <- matrix(c(5,1,1,2),2,2)
> Omega[,1] [,2]
[1,] 5 1
[2,] 1 2
> alpha <- c(2,-2)
> alpha
[1] 2 -2
> rmsn(10, xi, Omega, alpha)[,1] [,2][1,] -0.65320266 0.6861521[2,] 1.37481687 -0.1659318[3,] 3.14522100 0.4529551[4,] -0.07057607 -0.6608571[5,] -2.68493331 -2.9035422[6,] 2.19216656 0.7597699[7,] 1.50244323 0.7730602[8,] -1.81347772 -1.4717120[9,] -0.56875748 -0.8176260
[10,] 0.88476306 -0.3663496
attr(,"family")
[1] "SN"
attr(,"parameters")
attr(,"parameters")$xi
[1] 0 0attr(,"parameters")$Omega[,1] [,2]
[1,] 5 1
[2,] 1 2attr(,"parameters")$alpha
[1] 2 -2attr(,"parameters")$tau
[1] 0
2.3对数正态分布
这块介绍如何生成一元和多元的对数正态分布随机数。生成对数正态分布的随机数的函数是rlnorm
,多元对数正态用mvlognormal
。
生成10个对数均值为0,对数标准差为1的对数随机数。
> n = 10
> rlnorm(n, meanlog = 0, sdlog = 1)[1] 1.5638173 0.7085567 0.9552697 0.7990129 0.3913724 2.3829746 2.7009141[8] 2.3251721 4.7090633 0.5284348
mvlognormal(n, Mu, Sigma, R)
# 生成10个 5维度的多元对数正态分布
> n = 10
> p = 5
> Mu = runif(p, 0, 1)
> mvlognormal(n, Mu, Sigma = rep(2, p), R = toeplitz(0.5^(0:(p-1))))[,1] [,2] [,3] [,4] [,5][1,] 0.19001058 1.03046394 0.96453695 0.82259809 0.15816013[2,] 0.17443047 0.06155735 0.37621382 0.33498919 0.27119953[3,] 0.34553546 0.28509934 0.29120016 0.04141813 0.22553617[4,] 0.11498941 0.35994614 0.23380755 0.15672124 0.04621199[5,] 0.32452033 0.11553876 0.55283657 0.26637357 0.11062302[6,] 0.04953786 0.16264098 1.75032911 6.34862167 1.38340544[7,] 0.32886451 0.30378793 0.02375825 0.02375620 0.89213319[8,] 0.16846539 0.03653899 0.11298382 0.22751003 0.09530435[9,] 0.07762988 0.31748557 0.05862739 0.03529833 0.12301490
[10,] 0.18367711 2.58261427 0.03078996 0.01153906 0.07951331
>
写在最后的话
希望可以帮助大家学习R语言。水平有限发现错误还望及时评论区指正,您的意见和批评是我不断前进的动力。
(多元)偏正态分布、正态分布、对数正态分布的随机数的产生(R语言)相关推荐
- R语言对数线性模型loglm函数_用R语言进行数据分析:常规和广义线性模型
用R语言进行数据分析:常规和广义线性模型 线性模型 对于常规的多重模型(multiple model)拟合,最基本的函数是lm(). 下面是调用它的方式的一种改进版: >fitted.model ...
- R语言对数线性模型loglm函数_使用R语言进行混合线性模型(mixed linear model) 分析代码及详解...
1.混合线性模型简介 混合线性模型,又名多层线性模型(Hierarchical linear model).它比较适合处理嵌套设计(nested)的实验和调查研究数据.此外,它还特别适合处理带有被试内 ...
- GraphPad Prism教程:对数正态分布,几何均值,几何SD因子
对数正态分布 关于对数正态分布的几个关键点: 当变化是由加和在一起的多个散点来源引起时,就会出现高斯分布.相反,变化是由于多个乘法的多个散点来源引起时, 出现对数正态分布: 对数正态分布中的所有值均为 ...
- R语言-基于豆瓣电影详情数据的清洗和多元回归分析
R语言-基于豆瓣电影详情数据的清洗和多元回归分析 文章目录 前言 一.数据源说明 二.数据合并 1.RData合并 2.csv合并 三.数据清洗 1.导入数据 2.总体缺失值.异常值识别 2.1缺失值 ...
- R语言使用log函数计算对数、自定义指定底数
R语言使用log函数计算对数.自定义指定底数 目录 R语言使用log函数计算对数.自定义指定底数 R语言是解决什么问题的? R语言使用log函数计算对数.自定义指定底数 安利一个R语言的优秀博主及其C ...
- 根据对数正态分布产生随机数
系统自带的对数正态分布函数lognrnd example m = 1; % 分布的均值 v = 2; % 分布的方差 mu = log((m^2)/sqrt(v+m^2)); % 公式中的均值参数 s ...
- R语言学习——一元与多元正态分布检验(也可以用于其他分布的检验)
文章目录 1 一元正态的评估 1.1 图像法 1.1.1 直方图 1.1.2 Q-Q图 1.2 峰度和偏度 1.3 统计检验 1.3.1 Shapiro-Wilks检验 1.3.2 Kolmogoro ...
- MATLAB中曲线拟合方法总结(包括对数正态分布函数)
鉴于最近遇到非线性函数拟合问题,本人对网上有关matlab多种类型的线性.非线性曲线拟合的方法进行了总结,希望对各位朋友有所帮助. 1. Matlab有一个功能强大的曲线拟合工具箱 cftool ,使 ...
- 对应于对数正态分布的拉丁超立方抽样——Python版
拉丁超立方抽样-对数正态分布 0.拉丁超立方抽样的理论基础 0.1.概况 0.2.基本原理 0.3.基本步骤 1.导入库和基本准备 2.生成(具有对数正态分布的随机变量)参数的随机数 3.将生成的随机 ...
- R语言对数正态分布分布函数Log Normal Distribution(dlnorm, plnorm, qlnorm rlnorm)实战
R语言对数正态分布函数Log Normal Distribution(dlnorm, plnorm, qlnorm & rlnorm)实战 目录 R语言对数正态分布函数Log Normal D ...
最新文章
- 2017年要学习的三个CSS新特性
- Retrofit 2使用要点梳理:小白进阶回忆录
- 8个直播底层支撑的创业机会,你都抓住了吗?
- 怎么将pdf转换成word
- HDU 2242 双连通分量 考研路茫茫——空调教室
- linux 重启oracle实例_Oracle实战(二)-Oracle概述
- .net下模拟不同身份登陆以获取不同权限
- 32岁转行还来得及吗?
- LA 5031 图询问
- php mysql旅游管理系统毕业设计网站作品
- 数字化转型背景下的金融交易业务中台实践
- HT1621B显示驱动LCD显示驱动芯片- SSOP48
- STM32实现Airplay音乐播放器
- 十分详细的React入门实例
- FTP 21端口和20端口有什么区别?
- 使用VMware创建linux censo7系统--超简单的图文安装
- 细说设计模式七大原则(7):合成复用原则
- Android 底层知识拾零,app架构升级
- 中美知识产权博弈:保护力度标准成最大分歧
- MATLAB 判断字符串中是否含有特定的字符
热门文章
- 【第109期】那碗“我拒绝”的毒鸡汤,坑了多少游戏策划?
- Grid++Report报表开发工具介绍
- 单车---------Eason
- oracle官怎么卸载网,Oracle终极彻底卸载
- CrossAir CA-S01 SMD贴片天线使用步骤
- [计算机网络]十、TCP的拥塞控制和4个计时器、常用协议原理和命令
- 强力回击 跨境侵权(TRO)卖家通过诉讼大获全胜,还净赚数万?
- java流重定向如何分类,Java 文件流与标准流之间的重定向
- 外星人笔记本没有修复计算机,外星人笔记本的使用小技巧
- python3字符串详解速查,新手流泪,老手顿悟