我有一个温度和千瓦时的数据集,我目前正在执行下面的回归。(基于系数的进一步回归在 PHP 中执行)
# Some kind of List structure..
UsageDataFrame <- data.frame(Energy, Temperatures);
# lm is used to fit linear models. It can be used to carry out regression,
# single stratum analysis of variance and analysis of covariance (although
# aov may provide a more convenient interface for these).
LinearModel <- lm(Energy ~ 1+Temperatures+I(Temperatures^2), data = UsageDataFrame)
# coefficients
Coefficients <- coefficients(LinearModel)
system('clear');
cat("--- Coefficients ---\n");
print(Coefficients);
cat('\n\n');
问题与我们的数据有关,我们无法确保没有随机通信故障或只是随机错误。这可以给我们留下像
Temperatures <- c(16,15,13,18,20,17,20);
Energy <- c(4,3,3,4,0,60,4)
Temperatures <- c(17,17,14,17,21,16,19);
Energy <- c(4,3,3,4,0,0,4)
现在作为人类,我们可以清楚地看到 60 千瓦时是基于温度的错误,但是我们有超过 2,000 个系统,每个系统都有多个仪表,每个系统都位于全国不同的位置......并且正常能源使用水平不同。
一个正常的数据集是每米每天 48 个温度和能量值。在一整年中,在 17520 点中,每米可能有大约 0-500 个坏点。
我已经阅读了有关该tawny软件包的其他帖子,但是我还没有真正看到任何可以通过 adata.frame并通过交叉分析处理它们的示例。
我知道可以做的不多,但是肯定可以根据温度剥离大量的值吗?以及它发生的次数..
由于 R 是基于数学的,我认为没有理由将其转移到任何其他语言中。
请注意:我是一名软件开发人员,以前从未使用过 R。
- 编辑 -
好的,这是一个真实世界的例子,似乎这个仪表是一个很好的例子。您可以看到零点正在建立,然后插入了一个巨大的值。“23、65、22、24”就是这样的例子。当它的通信失败并且它保存数据值并继续在设备上添加它时,就会发生这种情况。
(只是说通讯故障不在我的控制范围内,我也无法更改软件)
然而,因为零是一个有效值,我想删除任何针对温度或零的大量数字,它们显然是一个错误。
检测这一点并将数据平均化的想法也不是解决这个问题的方法,但是已经讨论过了,但是由于该仪表数据每 30 分钟一次,并且通信故障可能会发生数天。
大多数系统使用的能量比这更多,所以从消除零的角度来看,这可能是一个坏例子。
能源:http://pastebin.com/gBa8y5sM 温度: http: //pastie.org/4371735
(发布这么大的文件后,Pastebin 似乎已经对我失望了)

