Utilizo el paquete bnlearn en R para aprender la estructura de mi red bayesiana y sus parámetros. Lo que quiero hacer es "predecir" el valor de un nodo dado el valor de otros nodos como evidencia (obviamente, con la excepción del nodo cuyos valores estamos prediciendo).
Tengo variables continuas.
library(bnlearn) # Load the package in R
data(gaussian.test)
training.set = gaussian.test[1:4000, ] # This is training set to learn the parameters
test.set = gaussian.test[4001:4010, ] # This is test set to give as evidence
res = hc(training.set) # learn BN structure on training set data
fitted = bn.fit(res, training.set) # learning of parameters
pred = predict(fitted$C, test.set) # predicts the value of node C given test set
table(pred, test.set[, "C"]) # compares the predicted value as original
Ahora, este código funciona bien y da una tabla en la que se puede ver que los valores predichos para el nodo C son exactamente mismo que el valor original del nodo C en el conjunto de pruebas.
No entiendo el motivo, ¿alguien podría explicarlo?
Lo sé, estoy proporcionando todo el df del conjunto de pruebas que ya tiene el valor del nodo C en él. Pero si doy los datos de otras columnas, da un error. Por lo tanto, he intentado una alternativa de poner otros valores a 0.
test.set$C = 0 # To not give the original value of node C as evidence
pred = predict(fitted$C, test.set) # predicts the value of node C given test set
table(pred, test.set[, "C"]) # compares the predicted value as original
¿Es un error este planteamiento? (El uso de "NA" no está permitido).