是否可以打印出R中的模型形式

时间:2016-04-08 18:48:47

标签: r

是否可以在R中打印出模型的数学公式。例如,

library(usl)

data(raytracer)
usl.model <- usl(throughput ~ processors, data = raytracer)

我希望能够看到这个模型的(usl.model)公式。任何想法是否可行?

2 个答案:

答案 0 :(得分:1)

它位于模型的call位置。您可以使用以下方式访问它:

> usl.model@call
usl(formula = throughput ~ processors, data = raytracer)

更紧凑的选项,例如用于显示目的,是:

> print(as.formula(usl.model@call), showEnv=FALSE)
throughput ~ processors

更一般地说,在复杂的对象/列表/等上,str()是结构上的一个很好的切入点。

> str(usl.model)
Formal class 'USL' [package "usl"] with 15 slots
..@ frame        :'data.frame': 11 obs. of  2 variables:
  .. ..$ throughput: num [1:11] 20 78 130 170 190 200 210 230 260 280 ...
.. ..$ processors: num [1:11] 1 4 8 12 16 20 24 28 32 48 ...
.. ..- attr(*, "terms")=Classes 'terms', 'formula' length 3 throughput ~ processors
[.../...]
..@ call         : language usl(formula = throughput ~ processors, data = raytracer)
..@ regr         : chr "processors"
..@ resp         : chr "throughput"

您还可以将@(或$)添加到对象名称(例如usl.model@),然后按<tab>

答案 1 :(得分:1)

&#39; usl&#39;文件说:

The Universal Scalability Law can be expressed with following
formula. ‘C(N)’ predicts the relative capacity of the system for a
given load ‘N’:

   C(N) = N / (1 + sigma * (N - 1) + kappa * N * (N - 1))

我不确定如何解释您的问题,但是它会起作用 来自sigmakappa的{​​{1}}和summary(usl.model)系数 把它们插入这个等式中?

更新:对于raytracer示例,看起来N代表了C(N) 处理器数量和吞吐量N=raytracer$processors; attach(as.list(usl.model@coefficients)) F=usl.model@scale.factor data.frame(raytracer, pred=F* N / (1 + sigma * (N - 1) + kappa * N * (N - 1)))

   processors throughput       pred
1           1         20  20.00000
2           4         78  69.55746
3           8        130 118.48067
4          12        170 154.75037
5          16        190 182.70168
6          20        200 204.89242
7          24        210 222.92923
8          28        230 237.87214
9          32        260 250.44877
10         48        280 285.56580
11         64        310 306.91823

这会产生:

default

我不确定如何计算sigma和kappa。文档 说def lol transaction do puts 'Block in method: starting transaction with block with return' return puts 'this will not show' end end lol() transaction do puts 'block in Kernel: starting transaction with block with return' return puts 'this will not show' end 方法使用&#34;转换成第二个 度多项式&#34; (引用冈瑟),但如果模型框架缺乏 预测值为1然后它似乎回退到优化 系数(比例因子,西格玛和卡帕)最小化总和 平均实际和预测响应变量之间的差异 (上面的最后两列)。