isPnodeContinuous | R Documentation |
Continuous nodes are handled slightly differently from discrete
nodes. The function isPnodeContinuous
returns a logical value
indicating whether or not the node is continuous.
Continuous nodes can behave like discrete nodes (for the purposes of
building conditional probability tables, see BuildTable
)
if states are created from ranges of values. The function
PnodeStateBounds
accesses those ranges.
isPnodeContinuous(node)
PnodeStateBounds(node)
PnodeStateBounds(node) <- value
node |
A |
value |
A k by 2 numeric matrix giving the upper and lower bound for each state. |
Continuous, in this case, covers nodes whose possible states are numeric, either integer or real. The current model supports these nodes in a discrete Bayesian network by discretizing them. In particular, the range is broken up into a number of non-overlapping regions, each region corresponding to a state.
For example, consider a variable which is a count, and the analyst wants to consider the values 0, 1, 2 or 3, and 4 or more. This can be done by setting bounds on these states:
"Zero" | -0.5 | 0.5 |
"One" | 0.5 | 1.5 |
"TwoThree" | 1.5 | 3.5 |
"FourPlus" | 3.5 | Inf |
This matrix is the NodeStateBounds
for the node. Note that the
second column is the same as the first (offset by one). Note also
that infinite (Inf
and -Inf
) values are allowed.
Setting the state bounds to a matrix with k
rows, will make the
variable behave as if it has k
states.
The function isPnodeContinuous
returns a logical value.
The function PnodeStateBounds
returns a k
by 2 numeric
matrix giving the upper and lower bounds. Note that if bounds have
not been set for the node, then it will return a matrix with 0 rows.
This is rather strongly tied to how Netica treats continuous variables. A different mechism might be necessary as Peanut is expanded to cover more implementations.
Right now, the value is the midpoint of the interval. This cause problems when converting to T-values.
The setter function is very strict about the upper and lower bounds matching. Even a mismatch at the least significant digit will cause a problem.
Russell Almond
Pnode
, PnodeStateValues
,
PnodeParentTvals
## Not run:
library(PNetica) ## Requires implementation
sess <- NeticaSession()
startSession(sess)
tNet <- CreateNetwork("TestNet",session=sess)
theta1 <- NewDiscreteNode(tNet,"theta1",
c("VH","High","Mid","Low","VL"))
PnodeStateValues(theta1) <- effectiveThetas(NodeNumStates(theta1))
stopifnot (!isPnodeContinuous(theta1))
## This gives an error
out <- try(PnodeStateBounds(theta1))
stopifnot (is(out,'try-error'))
theta0 <- NewContinuousNode(tNet,"theta0")
stopifnot(nrow(PnodeStateBounds(theta0)) == 0L)
norm5 <-
matrix(c(qnorm(c(.001,.2,.4,.6,.8)),
qnorm(c(.2,.4,.6,.8,.999))),5,2,
dimnames=list(c("VH","High","Mid","Low","VL"),
c("LowerBound","UpperBound")))
PnodeStateBounds(theta0) <- norm5
PnodeStates(theta0)
PnodeStateBounds(theta0)
PnodeStateValues(theta0) ## Note these are medians not mean wrt normal!
DeleteNetwork(tNet)
stopSession(sess)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.