确定两个动态变化的分布的范围并排显示

determining a range for two dynamically changing distributions to show side by side

我有一个 R 函数,它为用户参数 dn1n2 绘制两条叠加曲线。这两条曲线(图)都与“d”有关。

我的问题是如何最好地管理范围(即 curve 内的 fromto),以便此范围始终允许两条曲线正确显示?

我尝试使用规则: 从=min.d = d-(15*d.SE)到=max.d = d+(15*d.SE)(其中 d.SE 是 "d" 的 标准错误。但此规则在许多情况下都无效。)

d.sampling = function(d, n1, n2 = NA){

    N = ifelse(is.na(n2), n1, (n1 * n2)/(n1 + n2))
   df = ifelse(is.na(n2), n1 - 1, (n1 + n2) - 2)
 d.SE = 1/sqrt(N)

min.d = d-(15*d.SE) ; max.d = d+(15*d.SE)

 curve( dt(x*sqrt(N), df)*sqrt(N), from = min.d, to = max.d, col = 2)

 curve( dt(x*sqrt(N), df, d*sqrt(N) )*sqrt(N), n = 1e4, lty = 2, col = 4, add = T )

 }
 # Example of use:
 d.sampling(n1 = 86, d = 1) # shows fine now, but change `d` to 2 and it fails

这样的事情会产生您期望的结果吗?

d.sampling = function(d, n1, n2 = NA){

  N = ifelse(is.na(n2), n1, (n1 * n2)/(n1 + n2))
  df = ifelse(is.na(n2), n1 - 1, (n1 + n2) - 2)
  d.SE = 1/sqrt(N)

  min.d = d.SE*min(qt(0.0001, df), qt(0.0001, df, d*sqrt(N)))   #d-(15*d.SE) 
  max.d = d.SE*max(qt(0.9999, df), qt(0.9999, df, d*sqrt(N)))   #d+(15*d.SE)

  curve( dt(x*sqrt(N), df)*sqrt(N), from = min.d, to = max.d, col = 2)

  curve( dt(x*sqrt(N), df, d*sqrt(N) )*sqrt(N), n = 1e4, lty = 2, col = 4, add = T )

}

# Example of use:
d.sampling(n1 = 86, d = 2)