0

分布的方差具有物理解释为围绕分布均值的惯性矩。我想用如下所示的模式来表示 R 中的方差:就像一个带箭头的开放椭圆,这是表示惯性矩的常用方法。你有什么建议可以方便地完成这项工作吗?我希望能够通过指定中心的坐标和两个“半径”的长度(以及可选的“中断”的长度)来将此椭圆添加到基本图形中。

在此处输入图像描述

4

1 回答 1

1

这是我的解决方案的最终代码:

inertia <- function(x0=0, y0=0, a, b, r=1/5, l=0.25, d=3, s=0, w=NULL, cols="black", npoints=101, ...){
  if(length(cols==1)) cols <- rep(cols,3)
  # ellipse:
  f <- function(x) sqrt(round(b^2*(1-(x-x0)^2/a^2),14)) 
  curve(y0 + f(x), from=x0-a, to=x0-a*r, add=TRUE, n=npoints, col=cols[1], ...)
  curve(y0 + f(x), from=x0+a*r, to=x0+a, add=TRUE, n=npoints, col=cols[2], ...)
  curve(y0 - f(x), from=x0-a, to=x0+a, add=TRUE, n=npoints, col=cols[3], ...)
  # arrow:
  segments(x0-s, y0-b, x0-l, y0-b+l/d, col=cols[3], ...)
  segments(x0-s, y0-b, x0-l, y0-b-l/d, col=cols[3], ...)
  if(!is.null(w)){
    segments(x0-s+w, y0-b, x0-l, y0-b+l/d, col=cols[3], ...)
    segments(x0-s+w, y0-b, x0-l, y0-b-l/d, col=cols[3], ...)
  }
}

在此处输入图像描述

有关解释,请参见http://stla.overblog.com/schematizing-the-variance-as-a-moment-of-inertia 。

于 2013-10-06T10:05:43.790 回答