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