提问人:Antonio 提问时间:6/29/2023 更新时间:6/29/2023 访问量:42
如何在 R 中向数据集添加更强的抖动?
How do I add stronger Jitter to a dataset in R?
问:
red <- apply(red, 2, jitter)
以上是我当前的代码。将它应用于我的数据框后,我注意到它的强度非常小。
如果我尝试以下操作,它不起作用:
red <- apply(red, 2, jitter(red, factor = 5))
答:
0赞
Hack-R
6/29/2023
#1
我认为你根本不需要这个,至少,如果我理解你的意图。下面是使用参数和一些数据的示例。apply()
amount
iris
从文档中,被描述为:amount
数值的;如果为正数,则用作金额(见下文),否则,如果 = 0,则默认值为 factor * z/50。
默认值 (NULL):系数 * d/5,其中 d 约为 x 值之间的最小差值。
首先,我以你为例,然后我增加了没有它的抖动。apply()
data(iris) # data (for example)
red <- iris # keeping your data.frame name
red <- red[,!colnames(red)=="Species"]
red <- apply(red, 2, jitter)
var(red)
Sepal.Length Sepal.Width Petal.Length Petal.Width Sepal.Length 11.528025 0.1123260 2.2771584 1.085271 Sepal.Width 0.112326 9.2040367 0.8921243 0.296827 Petal.Length 2.277158 0.8921243 9.9957082 1.680199 Petal.Width 1.085271 0.2968270 1.6801995 9.194739
red <- jitter(red, amount = 5)
var(red)
Sepal.Length Sepal.Width Petal.Length Petal.Width Sepal.Length 19.5928296 1.2155940 2.0093691 0.9365071 Sepal.Width 1.2155940 16.8435802 -0.6173289 0.4445300 Petal.Length 2.0093691 -0.6173289 16.6392921 1.7726687 Petal.Width 0.9365071 0.4445300 1.7726687 18.0234312
red <- jitter(red, amount = 500)
var(red)
Sepal.Length Sepal.Width Petal.Length Petal.Width Sepal.Length 79193.216 2570.665 6473.9229 -2702.2620 Sepal.Width 2570.665 74802.846 -5463.7883 2568.4585 Petal.Length 6473.923 -5463.788 87327.8161 865.1276 Petal.Width -2702.262 2568.458 865.1276 87766.5185
增加也确实有效,但根据数据的分布,它可能不太明显。factor
另一种方法是利用有抖动和不有抖动的数据值的差值来获得纯抖动的分量,并将其乘以您喜欢的任何数字,然后将其加回原始数据。
head(red)
Sepal.Length Sepal.Width Petal.Length Petal.Width 1 5.1 3.5 1.4 0.2 2 4.9 3.0 1.4 0.2 3 4.7 3.2 1.3 0.2 4 4.6 3.1 1.5 0.2 5 5.0 3.6 1.4 0.2 6 5.4 3.9 1.7 0.4
head((red + apply(red,2,jitter))*10)
Sepal.Length Sepal.Width Petal.Length Petal.Width 1 101.91095 70.00209 28.03810 3.831979 2 97.93295 60.18538 27.88743 3.948451 3 93.88483 64.09243 26.13381 3.886840 4 92.19319 61.80549 29.87822 3.818302 5 100.00335 71.95687 28.09964 3.991321 6 108.03858 78.09225 34.06902 8.037211
0赞
Mark
6/29/2023
#2
您也可以将抖动应用于您绘制的数据图,而不是数据本身,如下所示:
mtcars %>%
as_tibble() %>%
select(cyl, vs) %>%
ggplot(aes(x = vs, y = cyl, fill = cyl)) +
geom_point() +
geom_jitter()
如果希望散射是可重现的,请包含在代码中。set.seed(123)
上一个:如何包括抖动和地理点
评论