26
ANSYS 疑难问题&问答若干例 来问作者

ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 2: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

前言.indd 3 2014/12/23 17:59:58

www.zhiliaobang.com

Page 3: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

前言.indd 4 2014/12/23 17:59:58

www.zhiliaobang.com

Page 4: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

t

目录.indd 5 2014/12/23 18:00:27

www.zhiliaobang.com

Page 5: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

2

目录.indd 6 2014/12/23 18:00:27

www.zhiliaobang.com

Page 6: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

F

目录.indd 7 2014/12/23 18:00:27

www.zhiliaobang.com

Page 7: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

目录.indd 8 2014/12/23 18:00:27

www.zhiliaobang.com

Page 8: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

1

001.indd 1 2014/12/23 18:01:15

www.zhiliaobang.com

Page 9: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

001.indd 2 2014/12/23 18:01:15

www.zhiliaobang.com

Page 10: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

001.indd 3 2014/12/24 15:45:03

www.zhiliaobang.com

Page 11: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

001.indd 4 2014/12/23 18:01:15

www.zhiliaobang.com

Page 12: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

001.indd 5 2014/12/23 18:01:15

www.zhiliaobang.com

Page 13: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

runif(n, min=0, max=1)

> runif(3,1,3) # 3 [1,3] [1] 1.204 1.359 2.653> runif(5) # 5 [0,1][1] 0.2784 0.7755 0.4107 0.8392 0.7455

004.indd 54 2014/12/23 18:40:16

www.zhiliaobang.com

Page 14: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

199372 1'

RNGkind(kind="Wich")

> set.seed(1) #> runif(5)[1] 0.2655087 0.3721239 0.5728534 0.9082078 0.2016819

> Nsim=10^3> x=runif(Nsim) > x1=x[-Nsim] #> x2=x[-1] #> par(mfrow=c(1,3))> hist(x,prob=T,col=gray(0.3),main="uniform on [0,1]") #> curve(dunif(x,0,1),add=T,col="red") #> plot(x1,x2,col="red")>acf(x)#

004.indd 55 2014/12/23 18:40:16

www.zhiliaobang.com

Page 15: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

1U 2U [0,1]

1 1 22 log( ) cos(2 )X U U 2 1 22 log( ) sin(2 )X U U

N(0,1)N

n

> rnorm(5,10,5) # 5 10, 5[1] 3.172 14.705 7.173 5.842 8.879> rnorm(5) # 5[1] -0.58204 0.04606 0.96016 -0.68698 -0.35504

> x=rnorm(100)> hist(x,prob=T,main="normal mu=0,sigma=1") #> curve(dnorm(x),add=T) #

004.indd 56 2014/12/23 18:40:16

www.zhiliaobang.com

Page 16: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

x x

n

>x=rexp(100,1/10) # 100 10>hist(x,prob=T,col=gray(0.9),main=" 10 ">curve(dexp(x,1/10),add=T) #

~ (1)X Exp

> Nsim=10^4 > U=runif(Nsim) > X=-log(U) > Y=rexp(Nsim) > par(mfrow=c(1,2)) > hist(X,freq=F,main="Exp from Uniform") > curve(dexp(x,1),add=T,col="red") > hist(Y,freq=F,main="Exp from R") > curve(dexp(x,1),add=T,col="red")

004.indd 57 2014/12/23 18:40:16

www.zhiliaobang.com

Page 17: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

Exp from Uni

X

Den

sity

0 2 4 6 8 10

0.0

0.1

0.2

0.3

0.4

0.5

0.6

Exp from R

YD

ensi

ty

0 2 4 6 8 12

0.0

0.1

0.2

0.3

0.4

0.5

0.6

~ (1)X Exp

X { }i iP X x p 1,2,i (0) ( 0) 0p P X ( ) ( )iip P X x

1, 1, 2,

i

jj

p i r [0,1]

( 1) ( )i ip r p iX x

( 1) ( ) ( ) ( 1){ } { }i i i ii iP p r p P X x p p p 1,2,i

nx x

n

> size=1; p=0.5> rbinom(10,size,p) [1] 0 0 0 1 0 0 1 1 0

Exp from Uniform Exp from R

004.indd 58 2014/12/23 18:40:16

www.zhiliaobang.com

Page 18: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

第 4 章 随机数与抽样模拟  59

接下来,生成服从B(10,0.5)的二项分布随机数。

> size=10; p=0.5

> rbinom(5,size,p) #生成5个服从B(10,0.5)的二项分布随机数[1] 5 6 3 3 3

二项分布是离散分布,但随着试验次数n的增加,二项分布越来越接近于正态分布程序。

下面将分别产生100个n为10、15、50,概率p为0.25的二项分布随机数:

> par(mfrow=c(1,3))

> p=0.25

> for( n in c(10,20,50))

{ x=rbinom(100,n,p)

hist(x,prob=T,main=paste("n =",n))

xvals=0:n

points(xvals,dbinom(xvals,n,p),type="h",lwd=3)

}

> par(mfrow=c(1,1))

结果如图4-5所示。从图中可以看出,随着实验次数n的增大,二项分布越来越接近于正态

分布。

图4-5 模拟二项分布曲线图

4.1.5 常见分布函数表

除了生成前面介绍的几种分布的随机数外,还可以生成poisson分布、t分布和F分布等多种

分布的随机数,只要在相应的分布名前加“r”就可以,在此不一一赘述。现把常见分布归纳

成表4-1,供读者参考。

004.indd 59 2014/12/23 18:40:16

www.zhilia

obang.co

m

Page 19: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

60  R数据分析——方法与案例详解

表4-1 常见分布函数表

分  布 中文名称 R中的表达 参  数

Beta 贝塔分布 beta(a,b) shape1、shape2

Binomial 二项分布 binom(n,p) size、prob

Cauchy 柯西分布 cauchy( ) location、scale

Chi-square 卡方分布 chisq(df) df

Exponential 指数分布 exp(lamda) rate

F F分布 f(df1,df2) df1、df2

Gamma 伽玛分布 gamma() shape、rate

Geometric 几何分布 geom() prob

Hypergeometric 超几何分布 hyper() m、n、k

Logistic 逻辑分布 logis() location、scale

Negative binomial 负二项分布 nbinom() size、prob

Normal 正态分布 norm() mean、 sd

Multivariate normal 多元正态分布 mvnorm() mean、cov

Poisson 泊松分布 pois() lambda

T t 分布 t() df

Uniform 均匀分布 unif() min、max

Weibull 威布儿分布 weibull() shape、scale

Wilcoxon 威尔考可森分布 wilcox() m、n

除了在分布函数前面加r表示产生随机数外,还可以加p、q、d,其作用及代号如表4-2

所示。

表4-2 分布相关函数的代号及作用

函 数 代 号 函 数 作 用

r- 生成相应分布的随机数

d- 生成相应分布的密度函数

p- 生成相应分布的累积概率密度函数

q- 生成相应分布的分位数函数

例如: dnorm表示正态分布密度函数。

pnorm表示正态分布累积概率密度函数。

qnorm表示正态分布分位数函数(即正态累积概率密度函数的逆函数)。

求标准正态分布P(x ≤ 2)的累积概率。

> pnorm(2)[1] 0.9772499

004.indd 60 2014/12/23 18:40:16

www.zhilia

obang.co

m

Page 20: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

第 4 章 随机数与抽样模拟  61

已知标准正态分布累积概率为P(x≤a)=0.95,求对应的分位数a。

> qnorm(0.95)[1] 1.644854

4.2 多元随机数的生成

4.2.1 多元正态分布随机数

多元正态分布随机数可以使用MASS包中的mvrnorm()函数,其使用方法是:

mvrnorm(n = 1, mu, Sigma, tol = 1e-6, empirical = FALSE, EISPACK = FALSE)

n是生成的随机数个数,mu是均值向量,Sigma是协方差阵,tol是容忍度,empirical是逻辑

参数。取TRUE时,mu和Sigma取经验均值和协方差阵。

例4.2 如果需要产生均值都为0、协方差阵为 10 33 2

的二元正态分布随机数,则程序

如下:

> library(MASS) #载入MASS包> Sigma <- matrix(c(10,3,3,2),2,2)> Sigma [,1] [,2][1,] 10 3[2,] 3 2>x=mvrnorm(n=1000, rep(0, 2), Sigma)> head(x) [,1] [,2] [1,] 5.0585261 1.4603670 [2,] 2.1053161 1.6517563 [3,] 2.7894367 1.8277556 [4,] -0.4613868 -0.3554319 [5,] 0.7204386 -0.2566820 [6,] -3.0624694 0.3966681> var(x) [,1] [,2][1,] 10.18628 2.764450[2,] 2.76445 1.865402

另一种方法是安装包Mvnorm。包中的rmvnorm()函数可以生成多元正态分布,其用法是:

rmvnorm(n, mean = rep(0, nrow(sigma)), sigma = diag(length(mean)), method=c("eigen", "svd", "chol"), pre0.9_9994 = FALSE)

004.indd 61 2014/12/23 18:40:16

www.zhilia

obang.co

m

Page 21: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

62  R数据分析——方法与案例详解

n是生成随机数的个数,mean是均值向量,sigma是协方差阵。method提供了三种对sigma

矩阵进行分解的方法:特征根分解“eign” (默认),奇异值分解“sv”,cholesky分解

“chol”。

例4.3 生成均值为(1,2),协方差阵为 10 33 2

的二元正态分布随机数。

>install.packages("Mvnorm")

>library(Mvnorm)

> sigma <- matrix(c(10,3,3,2), ncol=2)

> x <- rmvnorm(n=500, mean=c(1,2), sigma=sigma)

> head(x)

[,1] [,2]

[1,] -1.02706101 2.0325031

[2,] 1.17677534 0.9076424

[3,] -0.69601078 1.8095752

[4,] 0.81885937 0.2968203

[5,] 5.01558563 3.5201720

[6,] -0.07314836 2.5388707

> colMeans(x)

[1] 1.133808 2.080458

> var(x)

[,1] [,2][1,] 10.405497 2.929879[2,] 2.929879 1.961995>plot(x)

得到如图4-6所示的二元正态分布随

机数的散点图,从散点图可以看出,两个

正态分布随机数是正相关关系。可以从协

方差阵里算出相关系数是3

10*2。

图4-6 二元正态分布随机数散点图

004.indd 62 2014/12/23 18:40:16

www.zhilia

obang.co

m

Page 22: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

第 4 章 随机数与抽样模拟  63

4.2.2 多元正态分布密度函数、分位数与累积概率

与生成一元随机数类似,pmvnorm()可以计算累积概率,其用法是:

pmvnorm(lower=-Inf, upper=Inf, mean=rep(0, length(lower)), corr=NULL,

sigma=NULL, algorithm = GenzBretz(), ...)

其中lower是求累积概率的下限,默认为-∞。upper是求累积概率的上限,默认为+∞。

mean是多元正态分布的均值向量,corr是多元正态分布的相关系数矩阵,sigma是协方差矩阵。

其中,相关系数矩阵和协方差矩阵两者只要知道一个即可。algortithm是计算累积概率的算法,

R提供了 GenzBretz、Miwa 和 TVPACK,默认为 GenzBretz算法。

例4.4 我们需要计算五元正态分布随机数的均值为0,相关系数矩阵为:

1 0.5 0.5 0.5 0.50.5 1 0.5 0.5 0.50.5 0.5 1 0.5 0.50.5 0.5 0.5 1 0.50.5 0.5 0.5 0.5 1

求其下限为 ( 1, 1, 1, 1, 1)− − − − − ,上限为 (3,3,3,3,3) 的累积概率。

> (mean <- rep(0, 5)) #均值向量

[1] 0 0 0 0 0

> (lower <- rep(-1, 5)) #下限

[1] -1 -1 -1 -1 -1

> (upper <- rep(3, 5)) #上限

[1] 3 3 3 3 3

> (corr <- diag(5)) #相关系数矩阵

[,1] [,2] [,3] [,4] [,5]

[1,] 1 0 0 0 0

[2,] 0 1 0 0 0

[3,] 0 0 1 0 0

[4,] 0 0 0 1 0

[5,] 0 0 0 0 1

> (corr[lower.tri(corr)] <- 0.5) #相关系数矩阵下三角用0.5赋值

> (corr[upper.tri(corr)] <- 0.5) #相关系数矩阵上三角用0.5赋值

> corr

[,1] [,2] [,3] [,4] [,5]

[1,] 1.0 0.5 0.5 0.5 0.5

[2,] 0.5 1.0 0.5 0.5 0.5

004.indd 63 2014/12/23 18:40:17

www.zhilia

obang.co

m

Page 23: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

64  R数据分析——方法与案例详解

[3,] 0.5 0.5 1.0 0.5 0.5

[4,] 0.5 0.5 0.5 1.0 0.5

[5,] 0.5 0.5 0.5 0.5 1.0

> (prob <- pmvnorm(lower, upper, mean, corr))

[1] 0.5800877

attr(,"error")

[1] 0.0003281129

attr(,"msg")

[1] "Normal Completion"

同理,求多元正态分布的密度函数可以用dmvnorm()函数,求多元正态分布的分位数可以

用qmvnorm()函数。

4.2.3 多元t分布随机数

在R中生成多元t分布随机数,可以使用Mvnorm包中的rmvt()函数,其用法是:

rmvt(n, sigma = diag(2), df = 1, delta = rep(0, nrow(sigma)), type =

c("shifted", "Kshirsagar"), ...)

其中,n是需要生成的随机数个数,sigma是事先给定的协方差矩阵。df是t分布自由度,默

认为1。参数delta、type用来设置非中心化的多元t分布。

例4.5 我们现在需要生成1000个服从自由度为5,相关系数为0.5的两元t分布。

> sigma=diag(2)+1

> sigma

[,1] [,2]

[1,] 2 1

[2,] 1 2

> x2<-rmvt(n=1000,df=5,sigma=sigma)

> head(x2)

[,1] [,2]

[1,] -0.90757696 -0.2518512

[2,] -0.08005831 1.2898629

[3,] -6.16577365 -5.4776832

[4,] -2.53960124 0.1871022

[5,] 1.04038843 0.4776877

[6,] -0.59168271 0.3045581

> plot(x2)

得到如图4-7所示的二元t分布随机数散点图。

004.indd 64 2014/12/23 18:40:17

www.zhilia

obang.co

m

Page 24: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

第 4 章 随机数与抽样模拟  65

图4-7 两元t分布随机数散点图

同理,求多元t分布的密度函数可以dmvt()函数,求多元t分布的分位数可以用qmvt()函数,

求多元t分布的累积概率用pmvt()函数。

4.3 随机抽样

4.3.1 放回与无放回抽样

R可以进行有放回、无放回抽样。用R语言进行抽样很简单,只用sample()函数就可以了。

其句法是:sample(x, n, replace = F, prob = NULL)。x表示总体向量,可以是数值、字符、逻辑向

量,n表示样本容量。replace = F,表示无放回抽样;replace = T表示有放回抽样,默认的是无

放回抽样。prob可以设置各个抽样单元不同的入样概率,进行不等概率抽样。

例4.6 可以用R来模拟抛一枚硬币,H表示正面,T表示背面,重复抛10次的情况。

> sample(c("H","T"),10,rep=T)[1] "H" "T" "T" "H" "T" "H" "H" "H" "T" "H"

例如掷一颗六面的骰子,重复掷10次。

> sample(1:6,10,rep=T)[1] 3 3 6 1 2 5 2 5 2 4> sample(100,10) #从100个产品中无放回随机抽取10个[1] 91 27 20 35 49 56 70 57 32 12> dice=as.vector(outer(1:6,1:6,paste)) #掷两颗六面的骰子> sample(dice,5,replace=T) #重复5次

004.indd 65 2014/12/23 18:40:17

www.zhilia

obang.co

m

Page 25: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

66  R数据分析——方法与案例详解

[1] "2 2" "2 3" "6 3" "5 2" "3 1"> dice=as.vector(outer(1:6,1:6,paste))#掷两颗六面的骰子的可能结果> dice[1] "1 1" "2 1" "3 1" "4 1" "5 1" "6 1" "1 2" "2 2" "3 2" "4 2" "5 2" "6 2"[13] "1 3" "2 3" "3 3" "4 3" "5 3" "6 3" "1 4" "2 4" "3 4" "4 4" "5 4" "6 4"[25] "1 5" "2 5" "3 5" "4 5" "5 5" "6 5" "1 6" "2 6" "3 6" "4 6" "5 6" "6 6"

这里outer(a,b,function),当function为空时,表示a,b两个向量的外积,也就等价于a %o%

b。这里,function是paste表示X向量的第一个元素与Y向量的每个元素分别组合,组成第一行;

接着,X向量的第二个元素与Y向量的每个元素分别组合,组成第二行,这样直到X向量最后一

个元素组合完毕。

本题的outer(1:6,1:6,paste)结果是:

[,1] [,2] [,3] [,4] [,5] [,6] [1,] "1 1" "1 2" "1 3" "1 4" "1 5" "1 6"[2,] "2 1" "2 2" "2 3" "2 4" "2 5" "2 6"[3,] "3 1" "3 2" "3 3" "3 4" "3 5" "3 6"[4,] "4 1" "4 2" "4 3" "4 4" "4 5" "4 6"[5,] "5 1" "5 2" "5 3" "5 4" "5 5" "5 6"[6,] "6 1" "6 2" "6 3" "6 4" "6 5" "6 6"

由于此时为矩阵形式,因此as.vector(X)表示把X强制转换成向量形式。

4.3.2 bootstrap重抽样

bootstrap重抽样法是Efron于1982所创立的方法,属于重复抽样(Resampling)方法。它是

以原始数据为基础的模拟抽样统计推断法,其基本思想是:在原始数据的范围内做有放回的再

抽样,样本量仍为n,原始数据中每个观察单位每次被抽到的概率相等,为1/n,所得样本称为

bootstrap样本。下面演示一个简单的bootstrap抽样。

例4.7 R内置数据faithful有个“eruptions”变量,用于记录火山爆发时间,它属于不常见

的分布。对它进行bootstrap重抽样,程序如下:

> faithful #读入内置数据 eruptions waiting

1 3.60 79

2 1.80 54

271 1.82 46

272 4.47 74

> attach(faithful) #数据绑定> sample(eruptions,10,replace=T) # 从数据中抽一个样本量为10的子样本[1] 4.617 4.800 4.667 2.367 3.833 1.883 4.350 2.017 4.467 4.183

004.indd 66 2014/12/23 18:40:17

www.zhilia

obang.co

m

Page 26: ANSYS 疑难问题 - kuangnanfang.com€¦ · *7 Ë Ë3 ö l búú µ Á µ M J J & e à ä J n 3 ¯ x Í Q O G Þ Ã 8 æ Î J × h Ò ` « ; R ` × y Ó · · J x è @ j o3 ¦ S

第 4 章 随机数与抽样模拟  67

> Sample=sample(eruptions,1000,rep=T) # 抽取一个样本量为1000的bootstrap样本> par(mfrow=c(1,2)) # 设置作图窗口为一行两列> hist(eruptions,breaks=25)

> hist(Sample,breaks=25)

> par(mfrow=c(1,1)) # 设置作图窗口为一行一列

结果如图4-8所示,左边第一个图是eruptions的直方图,右边是bootstrap抽样的分布,从图

中可以看出这两者的直方图很接近。

>detach() # 解除数据绑定

图4-8 火山爆发时间的抽样模拟

4.4 统计模拟

4.4.1 几种常见的模拟方法

R具有模拟各种类型的随机数的功能,使得用户可以进行各项试验并快速得出结果。这是

非常有用的技术,但是比较难掌握。

4.3节介绍了R用函数生成各种随机数,并且通过画直方图或其他方法观察它们的分布。接

下来,我们将生成一些新类型的随机数,并观察它们的分布情况。

1. 中心极限定理

中心极限定理是数理统计中非常重要的定理,很多定理和统计推断都建立在中心极限定理

的基础上。

设{xn}是独立同分布随机变量序列,其E(X1)=μ,Var(X1)=σ2,0< σ2<∞。则前n个变量之和

的标准化变量* 1 2 ... n

nX X X nY

σ+ + + −

= 的分布函数将随着n→∞而依概率收敛于标准正

004.indd 67 2014/12/23 18:40:17

www.zhilia

obang.co

m