2014-04-21 94 views

回答

6

編輯(爲了體現@達誠的輸入)。

像這樣:

set.seed(1)   # for reproducibility 
Z <- rexp(1000)  # random sample from exponential distribution 
p <- ppoints(100) # 100 equally spaced points on (0,1), excluding endpoints 
q <- quantile(Z,p=p) # percentiles of the sample distribution 
plot(qexp(p) ,q, main="Exponential Q-Q Plot", 
    xlab="Theoretical Quantiles",ylab="Sample Quantiles") 
qqline(q, distribution=qexp,col="blue", lty=2) 
+0

ppoints在這裏很有用。您選擇僅使用100分並根據數據估計樣本分位數的原因而不是直接使用數據? – Dason

+0

@Dason - 查看編輯。因此,'ppoints(n)'產生'n'個等間隔的點*,不包括終點(0,1)*,這更好。我不明白你提到「直接使用數據」。你爲什麼不發佈這樣的答案。 – jlhoward

+0

而不是使用分位數來獲得100個分位數 - 爲什麼不使用qqplot中常見的所有數據?舉個例子,看看'qqplot'中的最後一個例子 – Dason

5

這裏是一個ggplot2解決方案。

Z <- rexp(1000, rate = 2) 
library(MASS) 
params <- as.list(fitdistr(Z, "exponential")$estimate) 

library(ggplot2) 
qplot(sample = Z, geom = 'blank') + 
    stat_qq(distribution = qexp, dparams = params) 
2

R具有qqplot功能。 jlhoward做它「手動」並用quantile函數計算數據的分位數。但在R你不需要這樣做。

set.seed(1) 
data = rnorm(100, mean=5, sd=2) 
qqplot(x=qexp(ppoints(100)), y=data, main="Exponential Q-Q Plot", 
     xlab="Theoretical Quantiles", ylab= "Your Data Quantiles") 
qqline(data, distribution=qexp) 

click here to see R Plot(我沒有10美譽張貼圖片)

我沒有看到的原因,爲什麼jlhoward只需要100點,但不會像1000中的數據在他的榜樣的長度。或者,也許這只是一個打字錯誤?