File: inclusionprobabilities.R

package info (click to toggle)
r-cran-sampling 2.10-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,336 kB
  • sloc: ansic: 21; makefile: 2
file content (37 lines) | stat: -rw-r--r-- 810 bytes parent folder | download | duplicates (2)
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
inclusionprobabilities <- function(a,n)
{   if(!is.vector(a)) a=as.vector(a)
    nnull = length(a[a == 0])
    nneg = length(a[a < 0])
    if (nnull > 0) 
        warning("there are zero values in the initial vector a\n")
    if (nneg > 0) {
        warning("there are ", nneg, " negative value(s) shifted to zero\n")
        a[(a < 0)] = 0
    }
    if(identical(a,rep(0,length(a)))) pik1=a
    else
    {
    pik1 =n * a/sum(a)
    pik=pik1[pik1>0]
    list1=pik1>0
    list = pik >= 1
    l = length(list[list == TRUE])
    if(l>0)
    {
    l1=0
    while (l != l1) {
	x=pik[!list]
      x=x/sum(x)
      pik[!list] = (n - l)*x
      pik[list] = 1
      l1 = l
      list = (pik >= 1)
      l = length(list[list == TRUE])
    }
    pik1[list1]=pik
    }
    }
pik1
}