Learn R Programming

pcds (version 0.1.4)

Gam1PEbastri: The indicator for a point being a dominating point or not for Proportional Edge Proximity Catch Digraphs (PE-PCDs) - basic triangle case

Description

Returns \(I(\)p is a dominating point of the PE-PCD\()\) where the vertices of the PE-PCD are the 2D data set Dt for data in the basic triangle \(T_b=T((0,0),(1,0),(c_1,c_2))\), that is, returns 1 if p is a dominating point of PE-PCD, returns 0 otherwise.

PE proximity regions are defined with respect to the basic triangle \(T_b\). In the basic triangle, \(T_b\), \(c_1\) is in \([0,1/2]\), \(c_2>0\) and \((1-c_1)^2+c_2^2 \le 1\).

Any given triangle can be mapped to the basic triangle by a combination of rigid body motions (i.e., translation, rotation and reflection) and scaling, preserving uniformity of the points in the original triangle. Hence basic triangle is useful for simulation studies under the uniformity hypothesis.

Vertex regions are based on center \(M=(m_1,m_2)\) in Cartesian coordinates or \(M=(\alpha,\beta,\gamma)\) in barycentric coordinates in the interior of a basic triangle to the edges on the extension of the lines joining M to the vertices or based on the circumcenter of \(T_b\); default is \(M=(1,1,1)\) i.e., the center of mass of \(T_b\). Point, p, is in the vertex region of vertex rv (default is NULL); vertices are labeled as \(1,2,3\) in the order they are stacked row-wise.

ch.data.pnt is for checking whether point p is a data point in Dt or not (default is FALSE), so by default this function checks whether the point p would be a dominating point if it actually were in the data set.

See also (ceyhan:Phd-thesis,ceyhan:dom-num-NPE-Spat2011;textualpcds).

Usage

Gam1PEbastri(p, Dt, r, c1, c2, M = c(1, 1, 1), rv = NULL, ch.data.pnt = FALSE)

Value

\(I(\)p is a dominating point of the PE-PCD\()\) where the vertices of the PE-PCD are the 2D data set Dt, that is, returns 1 if p is a dominating point, returns 0 otherwise

Arguments

p

A 2D point that is to be tested for being a dominating point or not of the PE-PCD.

Dt

A set of 2D points which constitutes the vertices of the PE-PCD.

r

A positive real number which serves as the expansion parameter in PE proximity region; must be \(\ge 1\).

c1, c2

Positive real numbers which constitute the vertex of the basic triangle adjacent to the shorter edges; \(c_1\) must be in \([0,1/2]\), \(c_2>0\) and \((1-c_1)^2+c_2^2 \le 1\).

M

A 2D point in Cartesian coordinates or a 3D point in barycentric coordinates which serves as a center in the interior of the basic triangle \(T_b\) or the circumcenter of \(T_b\); default is \(M=(1,1,1)\) i.e., the center of mass of \(T_b\).

rv

Index of the vertex whose region contains point p, rv takes the vertex labels as \(1,2,3\) as in the row order of the vertices in \(T_b\).

ch.data.pnt

A logical argument for checking whether point p is a data point in Dt or not (default is FALSE).

Author

Elvan Ceyhan

References

See Also

Gam1ASbastri and Gam1AStri

Examples

Run this code
c1<-.4; c2<-.6;
A<-c(0,0); B<-c(1,0); C<-c(c1,c2);
Tb<-rbind(A,B,C)
n<-10  #try also n<-20

set.seed(1)
dat<-runif.bastri(n,c1,c2)$g

M<-as.numeric(runif.bastri(1,c1,c2)$g)  #try also M<-c(.6,.3)
r<-2

P<-c(.4,.2)
Gam1PEbastri(P,dat,r,c1,c2,M)
Gam1PEbastri(P,P,r,c1,c2,M)

Gam1PEbastri(dat[1,],dat,r,c1,c2,M)

Gam1PEbastri(c(1,1),dat,r,c1,c2,M)

Gam1PEbastri(c(1,1),dat,r,c1,c2,M,ch.data.pnt = FALSE)
#gives an error message if ch.data.pnt = TRUE since point p=c(1,1) is not a data point in Dt

Gam1PEbastri(c(1,1),c(1,1),r,c1,c2,M)

#or try
Rv<-rv.bastri.cent(dat[1,],c1,c2,M)$rv
Gam1PEbastri(dat[1,],dat,r,c1,c2,M,Rv)

Gam1PEbastri(c(2,1),dat,r,c1,c2,M)

Gam1PEbastri(c(.2,.1),dat,r,c1,c2,M)

gam.vec<-vector()
for (i in 1:n)
{gam.vec<-c(gam.vec,Gam1PEbastri(dat[i,],dat,r,c1,c2,M))}

ind.gam1<-which(gam.vec==1)
ind.gam1

Xlim<-range(Tb[,1],dat[,1])
Ylim<-range(Tb[,2],dat[,2])
xd<-Xlim[2]-Xlim[1]
yd<-Ylim[2]-Ylim[1]

if (dimension(M)==3) {M<-bary2cart(M,Tb)}
#need to run this when M is given in barycentric coordinates

if (identical(M,circ.cent.tri(Tb)))
{
  plot(Tb,pch=".",asp=1,xlab="",ylab="",axes=TRUE,
  xlim=Xlim+xd*c(-.05,.05),ylim=Ylim+yd*c(-.05,.05))
  polygon(Tb)
  points(dat,pch=1,col=1)
  Ds<-rbind((B+C)/2,(A+C)/2,(A+B)/2)
} else
{plot(Tb,pch=".",xlab="",ylab="",axes=TRUE,
xlim=Xlim+xd*c(-.05,.05),ylim=Ylim+yd*c(-.05,.05))
  polygon(Tb)
  points(dat,pch=1,col=1)
  Ds<-cp2e.bastri(c1,c2,M)}
L<-rbind(M,M,M); R<-Ds
segments(L[,1], L[,2], R[,1], R[,2], lty=2)
points(rbind(dat[ind.gam1,]),pch=4,col=2)

txt<-rbind(Tb,M,Ds)
xc<-txt[,1]+c(-.02,.02,.02,-.02,.03,-.03,.01)
yc<-txt[,2]+c(.02,.02,.02,-.02,.02,.02,-.03)
txt.str<-c("A","B","C","M","D1","D2","D3")
text(xc,yc,txt.str)

P<-c(.4,.2)
Gam1PEbastri(P,dat,r,c1,c2,M)

Gam1PEbastri(P,rbind(dat,dat),r,c1,c2,M)

dat.fr<-data.frame(a=dat)
Gam1PEbastri(P,dat.fr,r,c1,c2,M)

Gam1PEbastri(c(.2,.1),dat,r,c1,c2,M,ch.data.pnt=FALSE)
#gives an error message if ch.data.pnt=TRUE since point p is not a data point in Dt

Run the code above in your browser using DataLab