我想生成一個由3000個點組成的隨機序列,它遵循正態分佈。平均值是c,標準偏差是d。但我想這3000點在[a,b]的範圍內。生成隨機序列並繪製在R
你能告訴我如何在R中做到這一點?
如果我想繪製這個序列,如果Y軸使用了生成的3000個點,那麼我應該如何生成對應於X軸的點。
我想生成一個由3000個點組成的隨機序列,它遵循正態分佈。平均值是c,標準偏差是d。但我想這3000點在[a,b]的範圍內。生成隨機序列並繪製在R
你能告訴我如何在R中做到這一點?
如果我想繪製這個序列,如果Y軸使用了生成的3000個點,那麼我應該如何生成對應於X軸的點。
可以做這使用像這樣的標準R功能:
c <- 1
d <- 2
a <- -2
b <- 3.5
ll <- pnorm(a, c, d)
ul <- pnorm(b, c, d)
x <- qnorm(runif(3000, ll, ul), c, d)
hist(x)
range(x)
mean(x)
sd(x)
plot(x, type='l')
pnorm函數用於查找用於均勻分佈的限制,然後從統一生成數據,然後將其轉換回正常。
此使用頗包裝就更簡單了:
library(distr)
N <- Norm(c,d)
N2 <- Truncate(N, lower=a, upper=b)
plot(N2)
x <- r(N2)(3000)
hist(x)
range(x)
mean(x)
sd(x)
plot(x, type='l')
注意,在這兩種情況下均不是C和SD並不d。如果您希望得到的截斷數據的均值和sd爲c和d,那麼您需要父分佈(在截斷之前)具有不同的值(較高的sd,平均值取決於截斷值),找到這些值將是數學/統計理論課程的好作業問題。如果這是你真正需要的,那麼添加一個評論或者編輯這個問題來說明這個問題。
如果你想生成來自未截斷正常的數據,但只有區間[A,B],然後只需用ylim參數繪製內繪製數據:
plot(rnorm(3000, c, d), ylim=c(a,b))
任何概率分佈生成數字的隨機序列是R.很容易只給定範圍內正態分佈專門
c = 1
d = 2
x <- rnorm(3000, c, d)
剪輯在x
數值,以便使他們做到這一點對於想從正態分佈中抽取樣本來說,這是一件奇怪的事情。也許你真正想要做的是採樣一個統一的分佈。
a = 0
b = 3
x2 <- runif(3000, a, b)
至於如何陰謀的分佈,我不知道我按照你的問題。您可以繪製的樣品密度估計與此代碼
plot(density(x))
但是,如果你想繪製這個數據作爲某種類型的散點圖,你實際上需要生成數字的第二個樣本。
a = -2; b = 3
plot(dnorm, xlim = c(a, b))
如果我想要繪製此序列,如果Y軸使用所產生的3000點,那麼我應該如何生成對應於X軸的點。
如果你只是生成您的積分,就像JoFrhwld與
y <- rnorm(3000, 1, 2)
然後說
plot(y)
會自動使用數組索引爲x軸繪製出來
這不會做什麼OP要求。他想要正常分配3000點,所以'rnorm'是要走的路 – nico 2010-08-26 08:10:31
這是一個形式不太好的問題......我猜測。如果它只是真正繪製y軸上的隨機值,作爲它的一部分表明,x軸限制請求到底是什麼?這個不成立。我的猜測是隨機值被要求像@joFrhwld和@Joris Mays一樣產生密度函數。這是生成密度函數的正確方法。 – John 2010-08-26 10:52:33