数据模拟可以帮助我们更好的理解真实世界,今天给大家写写如何在R中做数据模拟。
单变量模拟
很多的分布都可以用R进行模拟,首先来看看最简单的正态分布的模拟,代码如下
x <- rnorm(n = 10000, mean = 10, sd = 1.5)
hist(x)
mean(x)
sd(x)
上面的代码中如果不给均值和标准差,默认为标准正态分布。R中还有很多相关的可以模拟标准分布的方法,直接给大家贴个图,大家可以一个一个试试:
上面所有的模拟方法都是从特定分布中抽取一个随机样本,每一种分布R还提供了三种其他的方法density, distribution function, quantile,比如对应正态分布我们就有4种方法:'rnorm', 'dnorm' (density), 'pnorm' (distribution function), 'qnorm' (for quantiles)。
回归的模拟
现在给大家模拟一个回归数据集出来,首先模拟出自变量和应变量
x <- rnorm(100, 10, 1.5)
Zy <- .8*Zx + rnorm(100, 0, sqrt(1 - (.8^2)))
然后生成模拟数据集
df.1 <- data.frame(x, Zy)
然后用生成的模拟数据再次做一个回归:
summary(lm(Zy ~ x))
可以看到,输出的回归结果很好,系数和我们模拟时设定的差不多,而且都显著。
模拟二元回归的应变量
上面介绍的连续数据的模拟,如果我们需要一个符合某种关系的二元变量可不可以模拟呢?可以的。这个时候需要用到'arm'包。
比如我现在模拟一个符合b0 + b1*x1 + b2*x2 + b3*x3关系的logistic回归的因变量,代码如下
x1 <- rnorm(100)
x2 <- rnorm(100)
x3 <- rnorm(100)
b0 <- 1
b1 <- 1.5
b2 <- 2
b3 <- 0.5
y <- rbinom(100, 1, invlogit(b0 + b1*x1 + b2*x2 + b3*x3))
df.2 <- data.frame(x1, x2, x3, y)
看看我们的因变量y的输出,完美。这个时候再把y转换为因子就可以直接拿去zhuangbi(分析)啦
df.2[,4] <- as.factor(df.2[,4])
小结
今天给大家写了如何用R进行数据模拟,感谢大家耐心看完。发表这些东西的主要目的就是督促自己,希望大家关注评论指出不足,一起进步。内容我都会写的很细,用到的数据集也会在原文中给出链接,你只要按照文章中的代码自己也可以做出一样的结果,一个目的就是零基础也能懂,因为自己就是什么基础没有从零学Python的,加油。
(站外链接发不了,请关注后私信回复“数据链接”获取本头条号所有使用数据)