@@ -7,7 +7,7 @@ mygof <- function(gof, echo=FALSE)
7
7
{
8
8
n <- length(obs )
9
9
s <- sort(obs )
10
- theop <- do.call(pdistnam ,c(list (s ),as.list(par ),as.list(fix.arg )))
10
+ theop <- do.call(pdistnam , c(list (s ), as.list(par ), as.list(fix.arg )))
11
11
1 / (12 * n ) + sum( ( theop - (2 * 1 : n - 1 )/ (2 * n ) )^ 2 )
12
12
}
13
13
}else if (gof == " KS" )
@@ -18,70 +18,90 @@ mygof <- function(gof, echo=FALSE)
18
18
s <- sort(obs )
19
19
obspu <- seq(1 ,n )/ n
20
20
obspl <- seq(0 ,n - 1 )/ n
21
- theop <- do.call(pdistnam ,c(list (s ),as.list(par ),as.list(fix.arg )))
22
- max(pmax(abs(theop - obspu ),abs(theop - obspl )))
21
+ theop <- do.call(pdistnam , c(list (s ), as.list(par ), as.list(fix.arg )))
22
+ max(pmax(abs(theop - obspu ), abs(theop - obspl )))
23
23
}
24
24
}else if (gof == " AD" )
25
25
{
26
26
fnobj <- function (par , fix.arg , obs , pdistnam )
27
27
{
28
28
n <- length(obs )
29
29
s <- sort(obs )
30
- theop <- do.call(pdistnam ,c(list (s ),as.list(par ),as.list(fix.arg )))
30
+ theop <- do.call(pdistnam , c(list (s ), as.list(par ), as.list(fix.arg )))
31
31
if (echo )
32
32
print(cbind(2 * 1 : n - 1 , s , theop , 1 - rev(theop ), log(theop ) + log(1 - rev(theop )), (2 * 1 : n - 1 ) * (log(theop ) + log(1 - rev(theop ))) ),
33
33
digit = 22 )
34
- - n - mean( (2 * 1 : n - 1 ) * (log(theop ) + log(1 - rev(theop ))) )
34
+ ilogpi <- log(theop * (1 - rev(theop ))) * (2 * 1 : n - 1 )
35
+ idx <- is.finite(ilogpi )
36
+ - sum(idx ) - mean( ilogpi [idx ] )
35
37
}
36
38
}else if (gof == " ADR" )
37
39
{
38
40
fnobj <- function (par , fix.arg , obs , pdistnam )
39
41
{
40
42
n <- length(obs )
41
43
s <- sort(obs )
42
- theop <- do.call(pdistnam ,c(list (s ),as.list(par ),as.list(fix.arg )))
44
+ theop <- do.call(pdistnam , c(list (s ), as.list(par ), as.list(fix.arg )))
43
45
if (echo )
44
46
print(cbind(2 * 1 : n - 1 , s , 1 - rev(theop ), log(1 - rev(theop )), (2 * 1 : n - 1 ) * log(1 - rev(theop )) ))
45
- n / 2 - 2 * sum(theop ) - mean ( (2 * 1 : n - 1 ) * log(1 - rev(theop )) )
47
+
48
+ ilogpi <- log(1 - rev(theop )) * (2 * 1 : n - 1 )
49
+ idx <- is.finite(ilogpi )
50
+ sum(idx )/ 2 - 2 * sum(theop [idx ]) - mean ( ilogpi [idx ] )
46
51
}
47
52
}else if (gof == " ADL" )
48
53
{
49
54
fnobj <- function (par , fix.arg , obs , pdistnam )
50
55
{
51
56
n <- length(obs )
52
57
s <- sort(obs )
53
- theop <- do.call(pdistnam ,c(list (s ),as.list(par ),as.list(fix.arg )))
54
- - 3 * n / 2 + 2 * sum(theop ) - mean ( (2 * 1 : n - 1 ) * log(theop ) )
58
+ theop <- do.call(pdistnam , c(list (s ), as.list(par ), as.list(fix.arg )))
59
+ ilogpi <- (2 * 1 : n - 1 ) * log(theop )
60
+ idx <- is.finite(ilogpi )
61
+ - 3 * sum(idx )/ 2 + 2 * sum(theop [idx ]) - mean ( ilogpi [idx ] )
55
62
}
56
63
}else if (gof == " AD2R" )
57
64
{
58
65
fnobj <- function (par , fix.arg , obs , pdistnam )
59
66
{
60
67
n <- length(obs )
61
68
s <- sort(obs )
62
- theop <- do.call(pdistnam ,c(list (s ),as.list(par ),as.list(fix.arg )))
63
- 2 * sum(log(1 - theop )) + mean ( (2 * 1 : n - 1 ) / (1 - rev(theop )) )
69
+ theop <- do.call(pdistnam , c(list (s ), as.list(par ), as.list(fix.arg )))
70
+
71
+ logpi <- log(1 - theop )
72
+ i1pi2 <- (2 * 1 : n - 1 ) / (1 - rev(theop ))
73
+ idx <- is.finite(logpi ) & is.finite(i1pi2 )
74
+
75
+ 2 * sum(logpi [idx ]) + mean( i1pi2 [idx ] )
64
76
}
65
77
}else if (gof == " AD2L" )
66
78
{
67
79
fnobj <- function (par , fix.arg , obs , pdistnam )
68
80
{
69
81
n <- length(obs )
70
82
s <- sort(obs )
71
- theop <- do.call(pdistnam ,c(list (s ),as.list(par ),as.list(fix.arg )))
72
- 2 * sum(log(theop )) + mean ( (2 * 1 : n - 1 ) / theop )
83
+ theop <- do.call(pdistnam , c(list (s ), as.list(par ), as.list(fix.arg )))
84
+ logpi <- log(theop )
85
+ i1pi <- (2 * 1 : n - 1 ) / theop
86
+ idx <- is.finite(logpi ) & is.finite(i1pi )
87
+ 2 * sum( logpi [idx ] ) + mean ( i1pi [idx ] )
73
88
}
74
89
}else if (gof == " AD2" )
75
90
{
76
91
fnobj <- function (par , fix.arg , obs , pdistnam )
77
92
{
78
93
n <- length(obs )
79
94
s <- sort(obs )
80
- theop <- do.call(pdistnam ,c(list (s ),as.list(par ),as.list(fix.arg )))
95
+ theop <- do.call(pdistnam , c(list (s ), as.list(par ), as.list(fix.arg )))
81
96
if (echo )
82
97
print(cbind(theop , log(theop ), log(1 - theop ), log(theop ) + log(1 - theop ), ((2 * 1 : n - 1 ) / (1 - rev(theop )))))
83
- 2 * sum(log(theop ) + log(1 - theop ) ) +
84
- mean ( ((2 * 1 : n - 1 ) / theop ) + ((2 * 1 : n - 1 ) / (1 - rev(theop ))) )
98
+
99
+ logpi <- log(theop * (1 - theop ))
100
+ i1pi <- (2 * 1 : n - 1 ) / theop
101
+ i1pi2 <- (2 * 1 : n - 1 ) / (1 - rev(theop ))
102
+ idx <- is.finite(logpi ) & is.finite(i1pi ) & is.finite(i1pi2 )
103
+
104
+ 2 * sum( logpi [idx ] ) + mean ( i1pi [idx ] + i1pi2 [idx ] )
85
105
}
86
106
}else
87
107
fnobj <- NULL
@@ -90,7 +110,7 @@ mygof <- function(gof, echo=FALSE)
90
110
}
91
111
92
112
pdistnam <- pweibull
93
- x <- c(rep(1 , 13 ), 10 )
113
+ x <- c(rep(1 , 14 ), 10 )
94
114
par <- fitdistrplus ::: startarg_transgamma_family(x , " weibull" )
95
115
fix.arg <- NULL
96
116
@@ -100,7 +120,15 @@ mygof("AD", TRUE)(par, fix.arg, x, pdistnam)
100
120
mygof(" ADR" , TRUE )(par , fix.arg , x , pdistnam )
101
121
mygof(" AD2" , TRUE )(par , fix.arg , x , pdistnam )
102
122
123
+ optim(par , function (theta ) mygof(" AD" , FALSE )(theta , fix.arg , x , pdistnam ), control = list (trace = 1 , REPORT = 1 ))
103
124
104
125
optim(par , function (theta ) mygof(" AD2" , FALSE )(theta , fix.arg , x , pdistnam ), control = list (trace = 1 , REPORT = 1 ))
105
126
106
- abs(mygof(" AD" )(as.list(unlist(par )+ eps ), fix.arg , x , pdistnam ) - mygof(" AD" )(par , fix.arg , x , pdistnam ))/ eps
127
+ optim(par , function (theta ) mygof(" ADR" , FALSE )(theta , fix.arg , x , pdistnam ), control = list (trace = 1 , REPORT = 1 ))
128
+
129
+ optim(par , function (theta ) mygof(" AD2R" , FALSE )(theta , fix.arg , x , pdistnam ), control = list (trace = 1 , REPORT = 1 ))
130
+
131
+ optim(par , function (theta ) mygof(" AD2L" , FALSE )(theta , fix.arg , x , pdistnam ), control = list (trace = 1 , REPORT = 1 ))
132
+
133
+
134
+
0 commit comments