File: testmixedequality.R

package info (click to toggle)
r-cran-mixtools 2.0.0.1-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,944 kB
  • sloc: ansic: 781; makefile: 6
file content (79 lines) | stat: -rwxr-xr-x 2,691 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
test.equality.mixed=function (y, x = NULL, w = NULL, arb.R = TRUE, arb.sigma = FALSE, 
    lambda = NULL, mu = NULL, sigma = NULL, R = NULL, alpha = NULL, 
    ...) 
{
    if (arb.R == arb.sigma) 
        stop("Change either 'arb.R' or 'arb.sigma'!")
    v = 1
    while (v == 1) {
        if (arb.R) {
            H0 = regmixEM.mixed(y = y, x = x, w = w, arb.R = TRUE, 
                arb.sigma = FALSE, lambda = lambda, sigma = sigma, 
                mu = mu, R = R, alpha = alpha, ...)
            p = nrow(H0$posterior.beta[[1]])
            k = length(H0$lambda)
            if (is.null(w)) 
                alpha = NULL
            else alpha = H0$alpha

#		n.i=sapply(y,length)
#		N=length(y)
#		tmp=apply(H1$posterior.z*n.i,2,sum)
#		common.sig=sum(tmp/N*H1$sigma)



#            H1 = regmixEM.mixed(y = y, x = x, w = w, arb.R = TRUE, 
#                arb.sigma = TRUE, lambda = H0$lambda, sigma = rep(H0$sigma,k), 
#                mu = H0$mu, R = H0$R, alpha = alpha, ...)

            H1 = regmixEM.mixed(y = y, x = x, w = w, arb.R = TRUE, 
                arb.sigma = TRUE, lambda = H0$lambda, sigma = NULL, 
                mu = H0$mu, R = H0$R, alpha = alpha, ...)

            D = 2 * (H1$loglik - H0$loglik)
            df = k - 1
            alpha = 1 - pchisq(D, df = df)
        }
        else {
            H0 = regmixEM.mixed(y = y, x = x, w = w, arb.R = FALSE, 
                arb.sigma = TRUE, lambda = lambda, sigma = sigma, 
                mu = mu, R = R, alpha = alpha, ...)
            p = nrow(H0$posterior.beta[[1]])
            k = length(H0$lambda)
            if (is.null(w)) 
                alpha = NULL
            else alpha = H0$alpha

#		N=length(y)
#		tmp=(apply(H1$posterior.z,2,sum))/N
#		common.R=matrix(0,ncol=p,nrow=p)
#		for(i in 1:length(H1$lambda)){
#			common.R=common.R+tmp[i]*H1$R[[i]]
#		}


#            H1 = regmixEM.mixed(y = y, x = x, w = w, arb.R = TRUE, 
#                arb.sigma = TRUE, lambda = H0$lambda, sigma = H0$sigma, 
#                mu = H0$mu, R = lapply(1:k,function(i) H0$R), alpha = alpha, ...)
            H1 = regmixEM.mixed(y = y, x = x, w = w, arb.R = TRUE, 
                arb.sigma = TRUE, lambda = H0$lambda, sigma = H0$sigma, 
                mu = H0$mu, R = NULL, alpha = alpha, ...)


            D = 2 * (H1$loglik - H0$loglik)
            df = p * (p + 1) * (k - 1)/2
            alpha = 1 - pchisq(D, df = df)
        }
        if (D < 0) {
            v = 1
	    lambda=NULL
	    sigma=NULL
	    mu=NULL
	    R=NULL
	    alpha=NULL}
        else v = 2
    }
    a = list(chi.sq = D, df = df, p.value = alpha)
    a
}