Training assessment: Difference between revisions

From Opasnet
Jump to navigation Jump to search
(→‎Calculations: new things seem to work but a lot of debugging needed)
Line 127: Line 127:
DecisionTableParser(decisions)
DecisionTableParser(decisions)


Fetch2(data.frame(Name = "health.impact", Key = "iaTGnY1hgUP5tofT"))
Fetch2(data.frame(Name = c("health.impact", "exposure"), Key = c("h796UrJF1UAVZp9H", "m22i7AfzxByOBaaG")))


exposure <- EvalOutput(exposure)
exposure <- CheckDecisions(exposure)
health.impact <- EvalOutput(health.impact)
health.impact <- EvalOutput(health.impact)
health.impact <- CheckDecisions(health.impact)
health.impact <- CheckDecisions(health.impact)


#print(xtable(health.impact@output[1:20,]), type = "html")
summary(exposure)
summary(health.impact)


probabilities <- new("ovariable",
probabilities <- new("ovariable",
Line 139: Line 142:
)
)


summary(health.impact)
ggplot(health.impact@output, aes(x = Year, y = health.impactResult, colour = Health.promotion)) +
geom_boxplot() +
theme_grey(base_size = 24)
 
ggplot(health.impact@output, aes(x = Year, y = health.impactResult, colour = Cleaning.policy)) +
geom_boxplot() +
theme_grey(base_size = 24)


ggplot(health.impact@output, aes(x = Year, y = health.impactResult, colour = Health.promotion)) +  
ggplot(health.impact@output, aes(x = Year, y = health.impactResult, colour = health.impactSource)) +  
geom_point() +  
geom_boxplot() +  
theme_grey(base_size = 24)
theme_grey(base_size = 24)


Line 148: Line 157:


#endp <- function(dectable)
#endp <- function(dectable)
dectable <- tidy(opbase.data("Op_en5677.endpoints"))
endpoints <- tidy(opbase.data("Op_en5677.endpoints"))
dectable
endpoints
out <- health.impact@output
out <- health.impact@output


# Conditions: Constructing a list of logical vectors which correspond to those rows of our new data.frame that we want to apply  
# Conditions: Constructing a list of logical vectors which correspond to those rows of our new data.frame that we want to apply  
# effects on.
# effects on.
cond <- list()
# Build multiple condition vectors that correspond to a unique decision - option combination
var <- list()
for (j in 1:nrow(dectable)) {
# In the decision table format conditions are given in the "Cell"-column separated by ";".
# Build multiple condition vectors that correspond to a unique decision - option combination
 
endpoint <- list()
removals <- c("exposureUnit", "exposureDescription", "exposureSource", "health.impactDescription", "health.impactSource",
"health.impactUnit", "exposureResult", "health.impactResult")
 
for(i in unique(endpoints$Stakeholder)) {
 
print(i)
 
dectable <- endpoints[endpoints$Stakeholder == i, ]
 
#print(dectable)
 
endpoint[[i]] <- new("ovariable", name = "endpoint", output = data.frame(Result = 0))
 
for (j in 1:nrow(dectable)) {
# In the decision table format conditions are given in the "Cell"-column separated by ";".
sel1 <- strsplit(as.character(dectable[j, "Cell"]), split = ";")[[1]]  
sel1 <- strsplit(as.character(dectable[j, "Cell"]), split = ";")[[1]]  
# ":" defines index - location matches as a condition.
# ":" defines index - location matches as a condition.
sel2 <- strsplit(sel1, split = ":") # No need for lapply, since strsplit is a vectorized function and current list depth is 1.
sel2 <- strsplit(sel1, split = ":") # No need for lapply, since strsplit is a vectorized function and current list depth is 1.
# Create a list of conditions which the decision and option specific condition vector consists of.  
# Create a list of conditions which the decision and option specific condition vector consists of.  
print(sel1)
tempovar <- get(as.character(dectable[j, "Variable"]))
print(sel2)
temp <- tempovar@output
selection <- list()
 
print(as.character(dectable[j, "Variable"]))
for (k in 1:length(sel1)) { # For each condition separated by ";"
var[[j]] <- get(as.character(dectable[j, "Variable"]))@output
 
for (k in 1:length(sel1)) { # For each condition separated by ";"
if (length(sel2[[k]]) > 1) { # If ":" has been used for condition k
if (length(sel2[[k]]) > 1) { # If ":" has been used for condition k
locs <- strsplit(sel2[[k]][2], split = ",")[[1]] # Split by "," for multiple locs per given index
locs <- strsplit(sel2[[k]][2], split = ",")[[1]] # Split by "," for multiple locs per given index
temp <- temp[temp[, sel2[[k]][1]] %in% locs , ] # Match our data.frame to the condition
var[[j]] <- var[[j]][var[[j]][, sel2[[k]][1]] %in% locs , ] # Match our data.frame to the condition
temp <- temp[, colnames(temp) != sel2[[k]][1] ] # Remove all indices that were  used in selecting rows, because otherwise they cannot be merged.
 
cat(j, k, "\n")
cat(j, k, "\n")
print(head(var[[j]]))
#print(head(temp))
}  
 
}
}
}
#print(head(temp))
# Make an ovariable out of the rows matching the condition.
tempovar@output <- temp
#print(head(tempovar@output))
# Multiply by the weight and add to previous stakeholder endpoint.
#print(as.numeric(as.character(dectable[j, "Result"])))
tempovar <- tempovar * as.numeric(as.character(dectable[j, "Result"]))
cat("Tempovar\n")
tempovar@output <- tempovar@output[ , !colnames(tempovar@output) %in% removals]
print(head(tempovar@output))
cat("endpoint[[i]]\n")
print(head(endpoint[[i]]@output))
endpoint[[i]] <- endpoint[[i]] + tempovar
cat("Endpoint updated\n")
print(head(endpoint[[i]]@output))
 
}}
endpoint
 
ggplot(endpoint[[1]]@output, aes(x = Health.promotion, y = Result, colour = Cleaning.policy)) +
geom_boxplot() +
theme_grey(base_size = 24)
 
ggplot(endpoint[[2]]@output, aes(x = Health.promotion, y = Result, colour = Cleaning.policy)) +
geom_boxplot() +
theme_grey(base_size = 24)
 


#Pseudocode for the rest:
#Pseudocode for the rest:
Line 193: Line 243:
# Give outputs as a list that has one ovariable for each Stakeholder.
# Give outputs as a list that has one ovariable for each Stakeholder.
########################


</rcode>
</rcode>

Revision as of 22:03, 1 January 2013



This is a training assessment about an imaginary, simple case. The purpose is to illustrate assessment functionalities.

Scope

Question

What decisions are worth implementing in the training assessment?

Boundaries

  • Time: Year 2012 - 2020

Scenarios

  • Factory can reduce emissions, or continue business as usual.
  • School can increase health education, decrease it to save money, or continue business as usual.

Intended users

  • Anyone who wants to learn to make open assessments.

Participants

  • Main participants:
    • YMAL,
    • Summer workers of YMAL in 2012,
    • Participants of [[Decision analysis and risk management 2013}}

Answer

Conclusions

Results

Not yet available.

Rationale

The causal diagram for the training assessment.

Assessment-specific data

Decisions
Decisions(-)
ObsDecisionmakerDecisionOptionVariableCellChangeUnitAmountDescription
1FactoryCleaning.policyReduce emissionsexposureYear:2020Multiply-0.5
2SchoolHealth.promotionIncrease health educationhealth.impactYear:2020Multiply-0.9
3SchoolHealth.promotionPromotion budget reducedhealth.impactYear:2020Multiply-1.1
Probabilities
Probabilities(P)
ObsStakeholderVariableCellProbabilityDescription
1City of KuopioexposureCleaning.policy: Reduce emissions0.8
2City of KuopioexposureCleaning.policy: BAU0.2
3Factoyhealth.impactHealth.promotion: Increase health education0.1
4Factoyhealth.impactHealth.promotion: Promotion budget reduced0.4
5Factoyhealth.impactHealth.promotion: BAU0.5
Endpoints
Endpoints(-)
ObsStakeholderVariableCellModelResultDescription
1City of Kuopiohealth.impactYear:2012Weighted sum1000
2City of Kuopiohealth.impactYear:2020Weighted sum1000
3Citizenshealth.impactYear:2012Weighted sum1000
4Citizenshealth.impactYear:2020Weighted sum2000Future years are twice as important.
Variables
Analyses
  • Decision analysis on each policy: Which option minimises the health risks?
  • Value of information (VOI) analysis for each policy about the major variables in the model and the total VOI.

Calculations

+ Show code

See also

Materials and examples for training in Opasnet and open assessment
Help pages Wiki editingHow to edit wikipagesQuick reference for wiki editingDrawing graphsOpasnet policiesWatching pagesWriting formulaeWord to WikiWiki editing Advanced skills
Training assessment (examples of different objects) Training assessmentTraining exposureTraining health impactTraining costsClimate change policies and health in KuopioClimate change policies in Kuopio
Methods and concepts AssessmentVariableMethodQuestionAnswerRationaleAttributeDecisionResultObject-oriented programming in OpasnetUniversal objectStudyFormulaOpasnetBaseUtilsOpen assessmentPSSP
Terms with changed use ScopeDefinitionResultTool


  • Descriptions of a previous structure
  • ----#: . Päätöksenteon sokea piste: se mitä ihmiset eivät näe mutta eivät myöskään huomaa etteivät näe. Kuitenkin tutkimalla sitä mitä mitä ihmiset eivät näe saadaan selville asioita sokeasta pisteesta. Ymmärtämällä sokeaa pistettä voidaan keksiä asioita jotka järjestelmällisesti jäävät huomaamatta ja asioita, joilla voidaan korjata järjestelmällisiä puutteita. Avoin arviointi on tämmöinen päätöksenteon järjestelmällisten puutteiden korjausmekanismi. --Jouni 08:55, 1 May 2012 (EEST) (type: truth; paradigms: science: comment)

References


Related files

<mfanonymousfilelist></mfanonymousfilelist>