如何根据历史值预测内存使用情况和时间

时间:2014-12-12 05:31:32

标签: math memory statistics forecasting

我认为数学问题真的...... 我有一些电子表格输出的历史数据以及行数和列数。

我想要做的是使用此数据根据已知的行和列预测峰值内存使用量和所用时间。

因此,如果不存在历史数据,则不会有预测。 1或2个历史值将是非常不准确的,但我希望给定足够多的历史值,然后可以做出合理准确的预测?

我在jsfiddle上有一张桌子。任何帮助或想法将非常感激。我真的不知道从哪里开始。

http://jsfiddle.net/JelbyJohn/kwje9chf/3/

<table class="table table-condensed">
</table>

1 个答案:

答案 0 :(得分:1)

您可以使用linear regression模型。

由于这是一个编程站点,这里有一些R代码:

> d <- read.table("data.tsv", sep="\t", header=T)
> summary(lm(log(Bytes.RAM) ~ log(Rows) + log(Columns), d))

Call:
lm(formula = log(Bytes.RAM) ~ log(Rows) + log(Columns), data = d)

Residuals:
    Min      1Q  Median      3Q     Max 
-0.4800 -0.2409 -0.1618  0.1729  0.6827 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)  12.42118    0.61820  20.093 8.72e-09 ***
log(Rows)     0.51032    0.09083   5.618 0.000327 ***
log(Columns)  0.58200    0.07821   7.441 3.93e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.4052 on 9 degrees of freedom
Multiple R-squared: 0.9062, Adjusted R-squared: 0.8853 
F-statistic: 43.47 on 2 and 9 DF,  p-value: 2.372e-05 

此模型很好地解释了数据(为0.89),并建议电子表格大小与内存使用之间存在以下关系:

Bytes.RAM = exp(12.42 + 0.51 * log(Rows) + 0.58 * log(Columns))

可以使用类似的模型来预测执行时间(Seconds列)。在那里,R²是0.998