I calculated partial derivative of functions F2 and F6 with respect to unknown; a and b and I want to store the results of partial derivative in a matrix called “mat” to use it later in the R-program.
I tried the following code to calculate the partial derivatives and store the results in a matrix “mat” that has 2 columns and 2 rows. I got an error says:
Error: object 'a' not found
Error: object 'b' not found
So; what is the suitable code to store the results of the derivative of functions with respect to a and b in matrix mat
and then do some matrix work using matrix mat
? I appreciate your help.
The codes
x=c("a","b")#vector of unknown parameters; a and b
r=matrix(0,nrow=2,ncol=2)#create matrix 2 by 2
library("Deriv")
F2=function(a,b) (choose(10,0)*beta((a*(1-b))/b+0,(1-a)*(1-b)/b+10)/beta((a*(1-b))/b,(1-a)*(1-b)/b)+
choose(10,1)*beta((a*(1-b))/b+1,(1-a)*(1-b)/b+9)/beta((a*(1-b))/b,(1-a)*(1-b)/b)+
choose(10,2)*beta((a*(1-b))/b+2,(1-a)*(1-b)/b+8)/beta((a*(1-b))/b,(1-a)*(1-b)/b))
Deriv(F2,x)
mat[1,1]=c(a)
mat[1,2]=c(b)
F6=function (a,b) (choose(10,0)*beta((a*(1-b))/b+0,(1-a)*(1-b)/b+10)/beta((a*(1-b))/b,(1-a)*(1-b)/b)+
choose(10,1)*beta((a*(1-b))/b+1,(1-a)*(1-b)/b+9)/beta((a*(1-b))/b,(1-a)*(1-b)/b)+
choose(10,2)*beta((a*(1-b))/b+2,(1-a)*(1-b)/b+8)/beta((a*(1-b))/b,(1-a)*(1-b)/b)+
choose(10,3)*beta((a*(1-b))/b+3,(1-a)*(1-b)/b+7)/beta((a*(1-b))/b,(1-a)*(1-b)/b)+
choose(10,4)*beta((a*(1-b))/b+4,(1-a)*(1-b)/b+6)/beta((a*(1-b))/b,(1-a)*(1-b)/b)+
choose(10,5)*beta((a*(1-b))/b+5,(1-a)*(1-b)/b+5)/beta((a*(1-b))/b,(1-a)*(1-b)/b)+
choose(10,6)*beta((a*(1-b))/b+6,(1-a)*(1-b)/b+4)/beta((a*(1-b))/b,(1-a)*(1-b)/b))
Deriv(F6,x)
mat[2,1]=c(a)
mat[2,2]=c(b)
mat
The results
function (a, b)
{
.e1 <- 1 - b
.e2 <- 1 - a
.e4 <- .e2 * .e1/b
.e6 <- a * .e1/b
.e7 <- .e1/b
.e9 <- digamma(.e4)
.e10 <- digamma(.e7 + 10)
.e11 <- digamma(.e7)
.e12 <- .e4 + 10
.e13 <- .e4 + 8
.e14 <- .e4 + 9
.e15 <- 1 + .e6
.e16 <- 2 + .e6
.e17 <- digamma(.e6)
.e19 <- .e2 * (.e9 - .e11) + a * (.e17 - .e11)
.e20 <- b * beta(.e6, .e4)
.e21 <- beta(.e15, .e14)
.e22 <- beta(.e16, .e13)
.e23 <- beta(.e6, .e12)
.e24 <- digamma(.e12)
.e25 <- digamma(.e13)
.e26 <- digamma(.e14)
.e27 <- digamma(.e15)
.e28 <- digamma(.e16)
.e29 <- .e17 - .e9
c(a = ((10 * (.e27 - .e26) - 10 * .e29) * .e21 + (45 * (.e28 -
.e25) - 45 * .e29) * .e22 + .e23 * (.e9 - .e24)) * .e1/.e20,
b = ((.e2 * (.e9 + .e10 - (.e24 + .e11)) + a * (.e10 -
.e11)) * .e23 + (10 * .e19 - 10 * (.e2 * (.e26 -
.e10) + a * (.e27 - .e10))) * .e21 + (45 * .e19 -
45 * (.e2 * (.e25 - .e10) + a * (.e28 - .e10))) *
.e22) * (.e7 + 1)/.e20)
}
mat[1,1]=c(a)
# Error: object 'a' not found
mat[1,2]=c(b)
# Error: object 'b' not found
F6=function (a,b) (choose(10,0)*beta((a*(1-b))/b+0,(1-a)*(1-b)/b+10)/beta((a*(1-b))/b,(1-a)*(1-b)/b)+
choose(10,1)*beta((a*(1-b))/b+1,(1-a)*(1-b)/b+9)/beta((a*(1-b))/b,(1-a)*(1-b)/b)+
choose(10,2)*beta((a*(1-b))/b+2,(1-a)*(1-b)/b+8)/beta((a*(1-b))/b,(1-a)*(1-b)/b)+
choose(10,3)*beta((a*(1-b))/b+3,(1-a)*(1-b)/b+7)/beta((a*(1-b))/b,(1-a)*(1-b)/b)+
choose(10,4)*beta((a*(1-b))/b+4,(1-a)*(1-b)/b+6)/beta((a*(1-b))/b,(1-a)*(1-b)/b)+
choose(10,5)*beta((a*(1-b))/b+5,(1-a)*(1-b)/b+5)/beta((a*(1-b))/b,(1-a)*(1-b)/b)+
choose(10,6)*beta((a*(1-b))/b+6,(1-a)*(1-b)/b+4)/beta((a*(1-b))/b,(1-a)*(1-b)/b))
Deriv(F6,x)
function (a, b)
{
.e1 <- 1 - b
.e2 <- 1 - a
.e4 <- .e2 * .e1/b
.e6 <- a * .e1/b
.e7 <- .e1/b
.e9 <- digamma(.e4)
.e10 <- digamma(.e7 + 10)
.e11 <- digamma(.e7)
.e12 <- digamma(.e6)
.e14 <- .e2 * (.e9 - .e11) + a * (.e12 - .e11)
.e15 <- .e12 - .e9
.e16 <- .e4 + 10
.e17 <- .e4 + 4
.e18 <- .e4 + 5
.e19 <- .e4 + 6
.e20 <- .e4 + 7
.e21 <- .e4 + 8
.e22 <- .e4 + 9
.e23 <- 1 + .e6
.e24 <- 2 + .e6
.e25 <- 3 + .e6
.e26 <- 4 + .e6
.e27 <- 5 + .e6
.e28 <- 6 + .e6
.e29 <- 210 * .e14
.e30 <- 210 * .e15
.e31 <- b * beta(.e6, .e4)
.e32 <- beta(.e23, .e22)
.e33 <- beta(.e24, .e21)
.e34 <- beta(.e25, .e20)
.e35 <- beta(.e26, .e19)
.e36 <- beta(.e27, .e18)
.e37 <- beta(.e28, .e17)
.e38 <- beta(.e6, .e16)
.e39 <- digamma(.e16)
.e40 <- digamma(.e17)
.e41 <- digamma(.e18)
.e42 <- digamma(.e19)
.e43 <- digamma(.e20)
.e44 <- digamma(.e21)
.e45 <- digamma(.e22)
.e46 <- digamma(.e23)
.e47 <- digamma(.e24)
.e48 <- digamma(.e25)
.e49 <- digamma(.e26)
.e50 <- digamma(.e27)
.e51 <- digamma(.e28)
c(a = ((10 * (.e46 - .e45) - 10 * .e15) * .e32 + (120 * (.e48 -
.e43) - 120 * .e15) * .e34 + (210 * (.e49 - .e42) - .e30) *
.e35 + (210 * (.e51 - .e40) - .e30) * .e37 + (252 * (.e50 -
.e41) - 252 * .e15) * .e36 + (45 * (.e47 - .e44) - 45 *
.e15) * .e33 + .e38 * (.e9 - .e39)) * .e1/.e31, b = ((.e2 *
(.e9 + .e10 - (.e39 + .e11)) + a * (.e10 - .e11)) * .e38 +
(10 * .e14 - 10 * (.e2 * (.e45 - .e10) + a * (.e46 -
.e10))) * .e32 + (120 * .e14 - 120 * (.e2 * (.e43 -
.e10) + a * (.e48 - .e10))) * .e34 + (.e29 - 210 * (.e2 *
(.e40 - .e10) + a * (.e51 - .e10))) * .e37 + (.e29 -
210 * (.e2 * (.e42 - .e10) + a * (.e49 - .e10))) * .e35 +
(252 * .e14 - 252 * (.e2 * (.e41 - .e10) + a * (.e50 -
.e10))) * .e36 + (45 * .e14 - 45 * (.e2 * (.e44 -
.e10) + a * (.e47 - .e10))) * .e33) * (.e7 + 1)/.e31)
}
mat[2,1]=c(a)
# Error: object 'a' not found
mat[2,2]=c(b)
# Error: object 'b' not found
mat
# [,1] [,2]
# [1,] 0 0