2

我有 xy 数据,它们都有 +/- 错误(每边都相等)。它的数据类型在 xy 方向上具有正态分布。目前我们将其绘制为典型的 xy 十字,或使用 geom_rect(); 但两者在证明数据代表什么方面都有问题。根据我下面的粗略草图,我正在寻找一种解决方案,该解决方案将允许将每个 xy 数据点表示为某种正态/高斯分布(而不是 +)。

两个误差均呈正态分布的 xy 图

下面是一个示例数据框。

结构(列表(年龄= C(2003L,1999L,1995L,1993L,1993L,1993L,1990L,1988L,1987L,1987L,1987L,1984L,1984L,1983L,1975L,1975L,1974L,1972L,1972L,1963L,1960L,1960L,1959L,1959L,1957L,1957L,1953L,1953L,1953L,1951L,1951L,1951L,1951L ,, 1946L,1940L,1936L,1930L,1927L,1919L,1914L,1914L,1906L,1885L,1864L,1842L,18330L,1830L,1810L,1803L,1803L,1783L,1762L,1762L,1762L,1741L,1741L,1720L,1720L,1699L,1699L,1678L,1678L,1678L,1657L,2) , 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 4L, 2L, 2L, 2L, 3L, 5L, 3L, 3L, 4L, 6L, 4L, 8L, 5L, 7L, 5L, 10L , 14L, 17L, 23L, 21L, 20L, 53L, 67L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L), 值 = c(0, 0.07, 0, 0.09, 0.02, 0.06, -0.02 , 0.154, 0.05, 0.02, -0.03, -0.024, -0.01, -0.06, -0.15, -0.04, 0.065, -0.1, -0.09, -0.02, -0.024, -0.11, -0.081, -0.13, -0.12 , -0.07, -0.16, -0.122, -0.057, -0.18, -0.095, -0.105, -0.23, -0.19, -0.178, -0.267, -0.26, -0.158, -0.079, -0.218, -0.148, - 0.193),Value_error = c(0.17, 0.143, 0.18, 0.18, 0.17, 0.19, 0.18, 0.163, 0.19, 0.18, 0.18, 0.142, 0.17, 0.18, 0.17, 0.17, 0.152, 0.17, 0.17, 0.17, 0.151, 0.17, 0.154, "0.17, 0.18, 0.26, 0.17, 0.144, 0.145, 0.18, 0.153, 0.153, 0.17, 0.18, 0.144, 0.155, 0.138, 0.141, 0.157, 0.14, 0.147, 0.137) Age_error”,“Value”,“Value_error”),class =“data.frame”,row.names = c(NA,-42L))类 = “data.frame”, row.names = c(NA, -42L))类 = “data.frame”, row.names = c(NA, -42L))

这是我用来获取此数据框的典型 xy 错误图的代码。

ggplot() + geom_linerange(data=mydata, aes(y=Value, x=Age, xmin=Age-Age_error, xmax=Age+Age_error, ymin=Value-Value_error, ymax=Value+Value_error)) + geom_errorbarh(data=mydata, aes(y=Value, x=Age, xmin=Age-Age_error, xmax=Age+Age_error, ymin=Value-Value_error, ymax=Value+Value_error)) 

我还没有找到一个函数来做 xy 正态分布类型图,可能没有,但我想有人可能有一些想法!提前谢谢了。

4

2 回答 2

0

你想要一个年龄与价值的等高线图作为二维核密度吗?

require(MASS)
dens <- with(dat, MASS::kde2d(Age, Value))
str(dens)
#-------------
List of 3
 $ x: num [1:25] 1657 1671 1686 1700 1715 ...
 $ y: num [1:25] -0.267 -0.249 -0.232 -0.214 -0.197 ...
 $ z: num [1:25, 1:25] 0.00152 0.00187 0.00226 0.00267 0.00312 ...
#--------------
# kde2d is designed for contour display: x-vector, y-vector, z-Matrix
 contour(dens)

添加了数据点,因此等高线图和数据之间的连接更加明显:

 points(dat$Age, dat$Value, cex=0.3, col="red")

在此处输入图像描述

于 2013-08-14T18:04:26.633 回答
0

如果您需要每个 Age,Value 对都有 +ve 和 -ve 错误,那么我认为您可能正在寻找smoothScatter功能。此函数使用随着您远离该点而逐渐消失的配色方案绘制每个点的密度。

smoothScatter(mydata$Age, mydata$Value)

结果是

在此处输入图像描述

于 2016-06-08T18:04:32.737 回答