【发布时间】:2017-12-08 00:26:15
【问题描述】:
我看到了很多涉及这个主题的问题,但还没有找到答案。如果我错过了一个可以回答这个问题的问题,请标记这个并指出我们的问题。
场景:我们有一个基准数据集,我们有插补方法,我们系统地从基准中删除值并使用两种不同的插补方法。因此我们有一个基准, imputedData1 和 imputedData2。
问题:是否有一个函数可以产生一个数字,该数字表示基准和 imputedData1 之间的差异或/和基准和 imputedData2 之间的差异。即函数(benchmark, imputedData1) = 3.3 和函数(benchmark, imputedData2) = 2.8
注意:数据集是数字的,数据集大小相同,如果可能,方法应该在数据级别上工作(即不创建回归和比较回归 - 除非它可以与任何数字数据集一起工作)。
可重现的数据集,它们只在第一行发生了变化:
基准测试:
> head(mtcars,n=10)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
估算数据1:
> head(mtcars,n=10)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 22.0 4 108.0 100 3.90 2.200 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
估算数据2:
> head(mtcars,n=10)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 18.0 6 112.0 105 3.90 2.620 16.46 0 0 3 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
我曾尝试使用 RMSE(均方根误差),但效果不佳,因此我正在尝试寻找其他方法来解决此问题。
【问题讨论】:
-
由于你的变量有非常不同的范围,我会在运行任何比较之前对它们进行标准化(z 变换):
apply(df, 2, scale)。那么您的 RMSE 方法可能会更好。 -
这是个好主意。我有点不好意思没有考虑。非常感谢!
-
它可能有效,但如果第二个数据集是第一个数据集的两倍,那么比较将给出零。我认为数据应该根据基准的均值和标准差(对于基准和估算数据)进行居中和减少,然后应用 RMSE。当然,这取决于 OP 所说的“差异”
-
另一个好点,非常感谢!正如我提到的是对第一个答案的评论,“差异”这个词怎么会造成混淆或模棱两可?
-
是的,Moody_Mudskipper 当然是对的。根据基准对所有数据集进行标准化。
标签: r machine-learning data-analysis missing-data data-manipulation