簡體   English   中英

如何使正常的累積分布函數適合數據

[英]How to fit a normal cumulative distribution function to data

我生成了一些實際上是累積分布的數據,下面的代碼給出了我的數據中X和Y的示例:

X<- c(0.09787761, 0.10745590, 0.11815422, 0.15503521, 0.16887488, 0.18361325, 0.22166727,
0.23526786, 0.24198808, 0.25432602, 0.26387961, 0.27364063, 0.34864672, 0.37734113,
0.39230736, 0.40699061, 0.41063824, 0.42497043, 0.44176913, 0.46076456, 0.47229330,
0.53134509, 0.56903577, 0.58308938, 0.58417653, 0.60061901, 0.60483849, 0.61847521,
0.62735245, 0.64337353, 0.65783302, 0.67232004, 0.68884473, 0.78846000, 0.82793293,
0.82963446, 0.84392010, 0.87090024, 0.88384044, 0.89543314, 0.93899033, 0.94781219,
1.12390279, 1.18756693, 1.25057774)

Y<- c(0.0090, 0.0210, 0.0300, 0.0420, 0.0580, 0.0700, 0.0925, 0.1015, 0.1315, 0.1435,
0.1660, 0.1750, 0.2050, 0.2450, 0.2630, 0.2930, 0.3110, 0.3350, 0.3590, 0.3770, 0.3950,
0.4175, 0.4475, 0.4715, 0.4955, 0.5180, 0.5405, 0.5725, 0.6045, 0.6345, 0.6585, 0.6825,
0.7050, 0.7230, 0.7470, 0.7650, 0.7950, 0.8130, 0.8370, 0.8770, 0.8950, 0.9250, 0.9475,
0.9775, 1.0000)

plot(X,Y)

我想從這些數據中獲得中值,平均值和一些分位數信息(例如5%,95%)。 我想這樣做的方法是為它定義一個定義的分布,然后進行積分以得到我的分位數,平均值和中值。

問題是如何將最合適的累積分布函數擬合到這個數據(我希望這可能是正常的累積分布函數)。

我已經看到很多方法來適應PDF但我找不到任何適合CDF的東西。

(我意識到這對許多人來說似乎是一個基本問題,但它讓我掙扎!!)

提前致謝

也許您可以使用nlm查找參數,以最小化與觀察到的Y值的平方差異和正態分布的預期差異。 這是一個使用您的數據的示例

fn <- function(x) {
   mu <- x[1];
   sigma <- exp(x[2])
   sum((Y-pnorm(X,mu,sigma))^2)
}
est <- nlm(fn, c(1,1))$estimate

plot(X,Y)
curve(pnorm(x, est[1], exp(est[2])), add=T)

不幸的是,我不知道用這種方法很容易約束sigma> 0而不對變量進行exp轉換。 但合適似乎是合理的

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM