【发布时间】:2020-09-30 14:14:59
【问题描述】:
我正在比较 R 中两种鱼类之间的同位素数据。具体来说,我想查看生态位大小(大致由点周围的椭圆大小推断)。我附上了一个情节来展示我正在制作的情节(情节上有三条鱼,但统计上忽略了一条)Isotope plot
问题是,物种 1(蓝枪鱼)的样本量为 68,物种 2(条纹马林鱼)的样本量为 15,我需要检查不同的样本量对 95% 置信度大小的影响椭圆。
通常如何解决这个问题是基本上将我为物种 2 拥有的 15 个样本与来自物种 1 的 15 个样本的子集进行对比。如果椭圆的线稍微透明,并且我将它绘制了 100 次,则较暗的区域将揭示“真正的利基”。
我已经设法绘制了我的点,但不知道如何根据我的数据的随机子集绘制 100 个椭圆?
我的数据列在以下列中:'fish.id' - 有蓝枪鱼 (BM) 和条纹枪鱼 (SM); '15N' - 有我的氮值;和 '13C' - 有我的碳值。
`fish.id` `15N` `13C`
<chr> <dbl> <dbl>
1 BkM6F 14 15
2 BkM7F 10 16
3 BkM8F 11 16
4 BkM9F 11 18
5 BM12F 13 17
6 BM14F 13 20
7 BM17F 11 17
8 BM18F 15 19
9 BM19F 13 17
10 BM22F 13 16
# … with 79 more rows
这是我目前所拥有的:
#plot with all points
plot(Isotope$`13C`,Isotope$`15N`,type='n',
main = 'Marlin 13C vs 15N', xlab = '13C', ylab = '15N')
points(Isotope$`13C`[substr(Isotope$fish.id,1,2)=='Bk'],
Isotope$`15N`[substr(Isotope$fish.id,1,2)=='Bk'], pch=15, col = 'black')
points(Isotope$`13C`[substr(Isotope$fish.id,1,2)=='BM'],
Isotope$`15N`[substr(Isotope$fish.id,1,2)=='BM'], pch=16, col = 'dodgerblue3')
points(Isotope$`13C`[substr(Isotope$fish.id,1,2)=='SM'],
Isotope$`15N`[substr(Isotope$fish.id,1,2)=='SM'], pch=17, col = 'cadetblue3')
#attempt at subsetting data
plot( )
for(i in 1:1000) {
sampl1 <- sample(1:15,size=15,replace=TRUE)
sampl2 <- sample(1:69,size=15,replace=TRUE)
temp.data1 <- data1[sampl1,]
temp.data2 <- data2[sampl2,]
}
为帮助干杯!
【问题讨论】:
-
如果没有示例数据,我们无法为您演示解决方案,但您需要
car或ellipse包中的ellipse()函数,并且您需要使用 @ 为颜色添加透明度rgb()函数中的 987654328@ 参数。 -
嘿 dcarlson,为您的帮助喝彩!我将在帖子中添加一些示例数据。我一直在使用 SIBER 的 addEllipse 函数,但可能会尝试您建议的那些。
-
使用
dput(as.data.frame(Isotope))并为每个物种或整个事物粘贴 15 行。如果您在数据中仅使用物种标签创建species列,您的编码会更简单。仅此一项就会将您的情节陈述减少到几行。然后使用C13和N14作为您的同位素变量名称。这样可以节省大量输入,因为您不需要用name将名称括起来。SIBER包附带多个 vignettes 说明它的用途,可以让您更轻松地做事。
标签: r plot statistics data-science