Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
两组x和y坐标之间的总面积[r]_R - Fatal编程技术网

两组x和y坐标之间的总面积[r]

两组x和y坐标之间的总面积[r],r,R,我已经得到了两条轨道的一系列x和y坐标,现在我想能够计算线之间的空间面积 下面是我正在使用的一个真实示例,试图捕捉用户所做的偏离球线的操作: 一般来说,我想捕捉用户的线偏离球线的程度。我想要捕捉这一点的方式是两条线之间的区域(尽管可以说最好的方式是捕捉用户线每一点到球线的最小距离) 我有一些代码可以通过简单的示例捕捉到这个领域: example.matrix = matrix(c(0,1,2,3,4,5,6, 2,5,3,5,3,5,2, 2,2,4,6,4,2,2),nrow = 7)

我已经得到了两条轨道的一系列x和y坐标,现在我想能够计算线之间的空间面积

下面是我正在使用的一个真实示例,试图捕捉用户所做的偏离球线的操作:

一般来说,我想捕捉用户的线偏离球线的程度。我想要捕捉这一点的方式是两条线之间的区域(尽管可以说最好的方式是捕捉用户线每一点到球线的最小距离)

我有一些代码可以通过简单的示例捕捉到这个领域:

example.matrix = matrix(c(0,1,2,3,4,5,6,  2,5,3,5,3,5,2,  2,2,4,6,4,2,2),nrow = 7)
example.plot.data = data.frame(x = rep(example.matrix[,1],2),
                 ball_user = c(rep("user",length(example.matrix[,2])),
                               rep("ball",length(example.matrix[,3]))),
                 y_axis    = c(example.matrix[,2],example.matrix[,3]))

example.plot <- ggplot(example.plot.data, aes(x=x, y=y_axis, color=ball_user)) + geom_line()    
example.plot
example.matrix=矩阵(c(0,1,2,3,4,5,6,2,5,5,3,5,2,2,2,4,6,4,2,2),nrow=7)
example.plot.data=data.frame(x=rep(example.matrix[,1],2),
ball_user=c(代表(“用户”),长度(例如矩阵[,2]),
代表(“球”,长度(例如矩阵[,3]),
y_轴=c(例如矩阵[,2],例如矩阵[,3]))
示例1.0]

neg.dif.array=y.diff.array[y.diff.array这里有一个解决方案,取决于您是否希望保留差异的符号。它使用了一个事实,即您在相同的
x
-值下有测量值,并将其与
MESS
包中的
auc
函数相结合,该函数计算曲线下的面积

example.matrix = matrix(c(0,1,2,3,4,5,6,  2,5,3,5,3,5,2,  2,2,4,6,4,2,2),nrow = 7)
x <- example.matrix[,1]
y1 <- example.matrix[,2]
y2 <- example.matrix[,3]

MESS::auc(x, y1-y2)

它给出了15。

这里有一个解决方案,这取决于您是否希望保留差异的符号。它使用了一个事实,即您在相同的
x
值上进行测量,并将其与
MESS
包中的
auc
函数相结合,该函数计算曲线下的面积

example.matrix = matrix(c(0,1,2,3,4,5,6,  2,5,3,5,3,5,2,  2,2,4,6,4,2,2),nrow = 7)
x <- example.matrix[,1]
y1 <- example.matrix[,2]
y2 <- example.matrix[,3]

MESS::auc(x, y1-y2)

它给出了15。

为了计算球与使用者的偏差,我认为最合适的方法是计算每个时间步上两条线的距离,然后取所有这些距离的平均值

距离的计算实际上并不复杂:

calc_distances <- function(ball_x, ball_y, user_x, user_y) {
  sqrt((ball_x - user_x)^2 + (ball_y - user_y)^2) 
}
ball_x <- c(0,1,2,3,2,3,4)
ball_y <- c(2,2,4,6,3,2,3)
user_x <- c(0,1,2,3,2,3,4)
user_y <- c(2,5,4,5,4,5,3)

distances <- calc_distances(ball_x, ball_y, user_x, user_y)

par(mfrow=c(2,1))
plot(ball_x, ball_y, type = 'l', col = "red")
lines(user_x, user_y, col = "blue")
plot(distances, type = 'l')
abline(h=mean(distances), col = "red", lty = 2)

calc_distance为了计算球与用户的偏差,我认为最合适的方法是计算每个时间步上两条线的距离,然后取所有这些距离的平均值

距离的计算实际上并不复杂:

calc_distances <- function(ball_x, ball_y, user_x, user_y) {
  sqrt((ball_x - user_x)^2 + (ball_y - user_y)^2) 
}
ball_x <- c(0,1,2,3,2,3,4)
ball_y <- c(2,2,4,6,3,2,3)
user_x <- c(0,1,2,3,2,3,4)
user_y <- c(2,5,4,5,4,5,3)

distances <- calc_distances(ball_x, ball_y, user_x, user_y)

par(mfrow=c(2,1))
plot(ball_x, ball_y, type = 'l', col = "red")
lines(user_x, user_y, col = "blue")
plot(distances, type = 'l')
abline(h=mean(distances), col = "red", lty = 2)

calc_距离您真的对x-y图中轨迹之间的区域感兴趣吗?我认为在您的“用户”和“球”示例中,查看“用户”和“球”的距离更有意义在每个时间步。这是一个可以轻松整合的值,自交线不再是问题。感谢您的评论,我已经编辑了这个问题,以表达我理想的想法。我有一种不好的感觉,即每个x坐标处用户和球之间的距离可能会误导,具体取决于参与者偏离的方式(例如,当它向上倾斜时,在某一时刻向右偏得太远)。理想的(我认为)是两条直线之间的平均距离,但这更复杂。你真的对x-y图中轨迹之间的区域感兴趣吗?我认为在你的“用户”和“球”示例中,查看“用户”和“球”之间的距离更有意义“球“在每个时间步。这是一个可以轻松整合的值,自交线不再是问题。感谢您的评论,我已经编辑了这个问题,以表达我理想的想法。我有一种不好的感觉,即每个x坐标处用户和球之间的距离可能会误导,具体取决于参与者的偏离方式(例如,当它向上倾斜时,在某一时刻向右偏得太远)。理想的(我认为)是两条直线之间的平均距离,但这更复杂。你不可能意识到一个函数可以捕捉直线之间的平均距离…?我知道这有点厚脸皮,因为如果x的距离相等,那么它就不是
平均值了吗(y2-y1)
平均值(abs(y2-y1))
或者你是在要求其他东西吗?或者你可以使用
MESS::auc(x,y1-y2)/(max(x)-min(x))
?你不可能知道一个函数会捕捉线之间的平均距离…?我知道这有点厚颜无耻,如果x是等距的,那么它不就是
平均值(y2-y1)
或者
平均值(abs(y2-y1))
或者你是在要求其他东西吗?或者你可以使用
混乱::auc(x,y1-y2)/(max(x)-min(x))
?至少对我来说,我看到的潜在问题是,我没有在时间上工作,而是在x,y方向上工作。因此,看看我的第一个图形,想象一下如果用户在中间点向右弓箭步-因为坡度在该点倾斜,他们的球所在位置和用户所在位置之间的y轴差异将非常大高,即使其点与轨迹之间的距离相对较小(从左到右,但不是从上到下)。希望这是有意义的,看看我的最新数据应该能抓住问题的本质。ps在下一篇评论中,你的解决方案和问题强调的是我一直在错误地处理我的问题!我每个位置都有时间戳,对于我的任务,我应该,对于每个时间戳,比较“球”之间的距离立场和“用户”立场!所以,你的解决方案和评论真的很有帮助!我已经投了赞成票,但我认为另一个解决方案对于我提出的问题更准确,而你已经回答了我应该问的问题(但需要以不同的方式呈现不同处理的数据,以便在回答问题时提出不同的问题)很高兴我能帮忙:)我看到的潜在问题,至少对我来说,是我没有在时间上工作,而是在x,y偏差上工作。所以,看我的第一幅图,想象一下如果用户在中间点向右弓箭步-因为坡度在该点倾斜,他们的球所在位置和用户所在位置之间的y轴差将是
ball_x <- c(0,1,2,3,2,3,4)
ball_y <- c(2,2,4,6,3,2,3)
user_x <- c(0,1,2,3,2,3,4)
user_y <- c(2,5,4,5,4,5,3)

distances <- calc_distances(ball_x, ball_y, user_x, user_y)

par(mfrow=c(2,1))
plot(ball_x, ball_y, type = 'l', col = "red")
lines(user_x, user_y, col = "blue")
plot(distances, type = 'l')
abline(h=mean(distances), col = "red", lty = 2)