如何应用 R 中消除数据噪声的公式?

问题描述 投票:0回答:2

我正在处理 NGSim Traffic 数据,文本文件中有 18 列和 1180598 行。我想平滑“本地 Y”列中的位置数据。我知道 R 中有用于数据平滑的内置函数,但它们似乎都不与我需要应用的公式匹配。文本文件中的数据看起来像这样:

Index   VehicleID   Total_Frames    Local Y

    1   2   5   35.381
    2   2   5   39.381
    3   2   5   43.381
    4   2   5   47.38
    5   2   5   51.381
    6   4   8   504.828
    7   4   8   508.325
    8   4   8   512.841
    9   4   8   516.338
    10  4   8   520.854
    11  4   8   524.592
    12  4   8   528.682
    13  4   8   532.901
    14  5   7   39.154
    15  5   7   43.153
    16  5   7   47.154
    17  5   7   51.154
    18  5   7   55.153
    19  5   7   59.154
    20  5   7   63.154

以上数据列只是从原始文件中取出的示例。这里你可以看到 3 辆车,车辆 ID = 2、4 和 5,但实际上有 2169 辆车具有不同的 IDS。 Total_Frames 列告诉我们每辆车的车辆 ID 在第一列中重复了多少次,例如在上表中,车辆 ID 2 重复了 5 次,因此 Total_Frames 列中为“5”。以下是我需要应用的公式来消除“本地 Y”列中的数据噪声(平滑):

平滑仓位值 = (1/(从 k=i-D 到 i+D 的 [EXP^-abs(i-k)/delta] 的总和)) * ( ((Local Y) *[EXP^-abs(i-k) 的总和) /delta] 从 k=i-D 到 i+D))

哪里,

i = 索引# 增量 = 5 D = 15

我尝试过使用我所知道的内置函数,但它们没有按要求平滑数据。我的问题是:R中是否有任何内置函数可以按照给定公式的方式进行数据平滑或者可以将此公式作为参数?我需要将公式应用于 Local Y 中的每个值,对于相同的车辆 ID,该值之前有 15 个值,之后有 15 个值(i-D 和 i+D)。谁能告诉我如何解决这个问题?预先感谢。

function r noise
2个回答
0
投票

您可以将公式放入函数中,然后使用 R 的 apply 函数将其应用到数据框的“Local Y”列中的元素


0
投票

@Umair Durrani,从文献来看,NGSIM 数据集相反有 25 个属性/列。参考:https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9832594

© www.soinside.com 2019 - 2024. All rights reserved.