在此前的堆栈溢出问题中,您已帮助找到最适合我的数据的模型。在这方面,使用nls
函数和以下模型
f(x) = a/( b1 + b*x + (x*(x-1.877))^n)
我已经非常适合。
但是,我观察到的数据不是单变量的。换句话说,我的数据似乎遵循不同级别的模型。例如,值为x
:
x <- c(1.877,1.898,2.711,4.338,7.592,13.107,21.844)
Z(x,f1(x)) = 5
Z(x,f2(x)) = 20
Z(x,f3(x)) = 40
Z(x,f4(x)) = 60
各种f函数具有不同的a
和b
参数,但具有相同的n。
我的问题:生成我的数据的3D模型(上面的Z
函数)的最佳方法是什么?我可以以某种方式组成各种f函数来生成它吗?或者更简单地获取所有原始数据并尝试从那里生成模型?
编辑:按照建议插入数据集:
占CPU利用率(Z)的5%:
x1 (SIZE in GB) <- c(1.877,1.898,2.711,4.338,6.507,7.592,8.676,13.107,21.844)
y1 (#REQUESTS per second) <- c(790,450,125,90,60,45,40,22,22)
占CPU利用率的20%:
x2 (SIZE in GB) <- c(1.877,1.898,2.711,4.338,6.507,7.592,8.676,13.107,21.844)
y2 (#REQUESTS per second) <- c(4600,2600,780,500,180,140,120,77,72)
以及40%和60%的利用率。我知道每个CPU利用率级别的二维模型以适合此模型
f(x) = a/( b1 + b*x + (x*(x-1.877))^n)
我想要做的是通过提供x
(以GB为单位)和y
(每秒#REQUESTS)来提出3D表面,我可以预测CPU利用率的值( Z
)。此外,模型不应受我的数据范围的限制,换句话说,Z
的最大值应该倾向于无穷大(不是100%,我想使用Z
作为分数而不是百分比我的算法)。
提前谢谢。