R里的伪随机数怎么取的不得而知,但逆变换法应该是在分布函数已知的情况下最方便的做法吧。
我们从最简单的指数分布来测试吧。方法1用逆变换,方法2用伪随机也就是R里的built-in.
最后比较每种方法和各自,还有和对方的最大绝对值差值的分布。
方法1:
invF <- function(x){ log(1/(1-x))}D <- vector()
for (i in 1:100){
a <- runif(1e4) # 两组1万个0-1均匀分布随机数
b <- runif(1e4)
ran1 <- sapply(a, invF)
ran2 <- sapply(b, invF)
D <- c(D, max(abs(ran1 - ran2)))
}
summary(D)
Min. 1st Qu. Median Mean 3rd Qu. Max.
7.651 9.100 9.762 9.875 10.540 13.940
方法2:
D <- vector()for (i in 1:100){
a <- rexp(1e4, rate = 1) # 两组1万个参数为1的指数分布随机数
b <- rexp(1e4, rate = 1)
D <- c(D, max(abs(a - b)))
}
summary(D)
Min. 1st Qu. Median Mean 3rd Qu. Max.
7.765 8.977 9.574 9.727 10.590 12.540
两种方法混合:a是逆变换,b是伪随机
invF <- function(x){ log(1/(1-x))}D <- vector()
for (i in 1:100){
a <- runif(1e4) # 1万个0-1均匀分布随机数
b <- rexp(1e4, rate = 1) # 1万个参数为1的指数分布随机数
ran1 <- sapply(a, invF)
D <- c(D, max(abs(ran1 - b)))
}
summary(D)
Min. 1st Qu. Median Mean 3rd Qu. Max.
7.679 8.701 9.385 9.536 10.150 13.610
有没有发现。。根本没什么不同。
x<-c(127.3,130.0,132.7,129.4,135.0,137.1,141.1,142.8,145.5,145.3,
148.3,146.4,150.2,153.1,157.3,160.7,164.2,165.6,168.7,172.0)
y<-c(20.96,21.40,21.96,21.52,22.39,22.76,23.48,23.66,24.10,24.01,
24.54,24.28,25.00,25.64,26.46,26.98,27.52,27.78,28.24,28.78)
shuju<-data.frame(x,y)
shuju.reg<-lm(y~x)
summary(shuju.reg) #(1)建立回归方程
shuju.res
#自相关性
#图形诊断自相关性
shuju.res1<-shuju.res[1:length(shuju.res)-1]
shuju.res2<-shuju.res[2:length(shuju.res)]
plot(shuju.res1,shuju.res2) #e(t)与e(t-1)作图
#统计量诊断自相关性
library(car)
durbinWatsonTest(shuju.reg)
#迭代法
acf.1<-acf(shuju.res) #计算各阶自相关系数acf.1acf.1$acf[[2]]
rhohat <- 1-0.6632531/2rhohat
newy<-y[2:length(y)]-rhohat*y[1:length(y)-1]
newx<-x[2:length(y)]-rhohat*x[1:length(y)-1]
new.reg<-lm(newy~newx)
summary(new.reg)
durbinWatsonTest(new.reg)
#差分法
diffy <- diff(y)
diffx <- diff(x)
diff.reg <- lm(diffy~diffx-1)
summary(diff.reg)
durbinWatsonTest(diff.reg)
在r语言中,识别回归分析异常点的r函数有[m,n]=size(x);输入的变量x只是个二维的。
数据读取的方法,这里用的file.choose( ),这样做的好处是,会弹出窗口让你选择你要加载进来的文件,免去了输入路径的苦恼。R语言只学习了数据输入,及一些简单的处理,图形可视化部分尚未学习。
R是一种可编程的语言
作为一个开放的统计编程环境,语法通俗易懂,很容易学会和掌握语言的语法。而且学会之后,我们可以编制自己的函数来扩展现有的语言。这也就是为什么它的更新速度比一般统计软件,如SPSS、SAS等快得多。大多数最新的统计方法和技术都可以在R中直接得到。