118 B. Листинги программ
6 # a1, s1 - выборочные среднее и среднеквадратическое отклонение;
7 # x2 - регулярный вектор абсцисс в интервале [a1-4*s1, a1+4*s1];
8 # f1, F1 - оценки плотности вероятности и функции нормального
9 # распределения ~ N(a1,s1).
10 # # # # # # # # # # # # # # # # # # # # # #
11 source("samples.r")
12 n <- 100; x <- samples(n); a1 <- mean(x); s1 <- sd(x)
13 x2 <- seq(a1-4*s1, a1+4*s1, len=n)
14 f1 <- dnorm(x2, a1, s1); F1 <- pnorm(x2, a1, s1)
15 ltext <- sprintf("X~N(%.2f, %.2f)",a1,s1)
16 windows(); hist(x, breaks="Scott", xlim=range(x2), ylim=c(0,
17 1.2*max(f1)), freq=FALSE, main="", xlab="", ylab="")
18 rug(x); lines(x2, f1); box()
19 legend("topleft", lty=1, legend=paste("f(x):",ltext))
20 windows(); plot(ecdf(x), pch=".", xlim=range(x2),
21 main="", xlab="", ylab="")
22 rug(x); lines(x2, F1)
23 legend("topleft", lty=1, legend=paste("F(x):",ltext))
Интервальные оценки параметров распределения
1 # Построение реализаций доверительных интервалов для
2 # параметров нормально распределённой случайной величины:
3 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
4 # n, x - объём и реализация случайной выборки; g - доверительная
5 # вероятность; ci{M,D}{n,g} - границы доверительных интервалов для
6 # MX и DX при постоянной доверительной вероятности и объёме выборки.
7 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
8 set.seed(20100625)
9 n <- seq(100, 1000, 20); g <- seq(0.95, 0.995,,length(n))
10 ciM <- function(x,n,g) mean(x)-sd(x)/sqrt(n)*qt((1+c(g,0,-g))/2,n-1)
11 ciD <- function(x,n,g) sd(x)^2*(n-1)/qchisq((1+c(g,0,-g))/2,n-1)
12 ciMn <- sapply(n, function(nn) ciM(rnorm(nn), nn, g[1]))
13 ciDn <- sapply(n, function(nn) ciD(rnorm(nn), nn, g[1]))
14 ciMg <- sapply(g, function(gg) ciM(rnorm(n[1]), n[1], gg))
15 ciDg <- sapply(g, function(gg) ciD(rnorm(n[1]), n[1], gg))
16 txtMn <- sprintf("MX(n,g=%.3g)",g[1])
17 txtDn <- sprintf("DX(n,g=%.3g)",g[1])
18 txtMg <- sprintf("MX(g,n=%.0f)",n[1])
19 txtDg <- sprintf("DX(g,n=%.0f)",n[1])
20 ci_graph <- function(x, y, point, text) { windows()
21 plot(range(x), range(y), type="n", xlab="", ylab="")
22 for(j in seq(length(y))) {
23 lines(x[,j], rep(y[j],3), lwd=2)
24 points(x[2,j], y[j], pch=16, lwd=2) }
25 legend("topright", legend=text, bg="white")
26 abline(v=point, lty=2, lwd=2) }
27 ci_graph(ciMn, n, 0, txtMn)
28 ci_graph(ciMg, g, 0, txtMg)
29 ci_graph(ciDn, n, 1, txtDn)