4

これを使用して2つの密度曲線をプロットしました:

Network <- Mydf$Networks
quartiles <-  quantile(Mydf$Avg.Position,  probs=c(25,50,75)/100)
density <- ggplot(Mydf, aes(x = Avg.Position, fill = Network))
d <- density + geom_density(alpha = 0.2) + xlim(1,11) + opts(title = "September 2010") + geom_vline(xintercept = quartiles, colour = "red")
print(d)

特定の Avg.Position 範囲の各曲線の下の面積を計算したいと思います。通常の曲線の pnorm のようなものです。何か案は?

4

2 に答える 2

10

密度を個別に計算し、最初にその密度をプロットします。次に、基本的な算術演算を使用して見積もりを取得できます。積分は、一連の小さな正方形の面積を合計することによって近似されます。そのために平均法を使用します。長さは 2 つの x 値の差、高さは間隔の開始時と終了時の y 値の平均です。私はzooパッケージでrollmeans関数を使用していますが、これはbaseパッケージでも実行できます。

require(zoo)

X <- rnorm(100)
# calculate the density and check the plot
Y <- density(X) # see ?density for parameters
plot(Y$x,Y$y, type="l") #can use ggplot for this too
# set an Avg.position value
Avg.pos <- 1

# construct lengths and heights
xt <- diff(Y$x[Y$x<Avg.pos])
yt <- rollmean(Y$y[Y$x<Avg.pos],2)
# This gives you the area
sum(xt*yt)

これにより、小数点以下 3 桁までの適切な概算が得られます。密度関数を知っている場合は、?integrate

于 2010-10-06T21:38:27.187 に答える
4

3 つの可能性:

logspline パッケージは、密度曲線を推定する別の方法を提供しますが、結果の pnorm スタイル関数が含まれています。

また、密度関数によって返された x 変数と y 変数を approxfun 関数に入力し、その結果を関数 integrate で使用して、面積を概算することもできます。小さいテール エリア (または非常に小さい間隔) の正確な推定に関心がない限り、おそらくこれで妥当な近似値が得られます。

密度推定値は、データを中心としたカーネルの合計であり、そのようなカーネルの 1 つが正規分布です。帯域幅によって定義され、データを中心とした sd を使用して、pnorm (または他のカーネル) からの領域を平均化できます。

于 2010-10-06T20:15:19.503 に答える