Nothing
## ----setup, echo=FALSE,message=FALSE,warning=FALSE----------------------------
knitr::opts_chunk$set(collapse = T, comment = "#>")
options(tibble.print_min = 4L, tibble.print_max = 4L)
set.seed(123)
library(irtrees)
library(flextable)
library(reshape2)
library(mirt)
library(lme4)
## ---- echo=FALSE--------------------------------------------------------------
g = data.frame(person=c('John','Mary'),
sex=c('male','female'),
item1=c("A","A"),
item2=c("C",'B'))
flextable(g)
## ---- echo=FALSE, warning=FALSE-----------------------------------------------
flextable(melt(g,id.vars='person'))
## ---- echo=FALSE, warning=FALSE-----------------------------------------------
flextable(melt(g,id.vars=c('person','sex')))
## ---- echo=FALSE, warning=FALSE-----------------------------------------------
flextable(melt(g[,-2],id.vars=c('person')))
flextable(g[,1:2])
## ---- echo=FALSE--------------------------------------------------------------
f=expand.grid(c('Wide','Long'),c('Wide','Long'),c('single','multiple'))
names(f)=c('Input','Output','Tree')
f$Function = paste0(substr(f$Input,1,1),'to',substr(f$Output,1,1),'_',f$Tree,'.tree')
f$Function = gsub('multiple','multi',f$Function)
autofit(flextable(f))
## -----------------------------------------------------------------------------
five_wide = data.frame(
id = 1:100,
gender = factor(sample(c('M','F'), 100, replace=TRUE)),
item1 = sample.int(5, 100, replace = TRUE),
item2 = sample.int(5, 100, replace = TRUE),
item3 = sample.int(5, 100, replace = TRUE),
item4 = sample.int(5, 100, replace = TRUE),
item5 = sample.int(5, 100, replace = TRUE)
)
str(five_wide)
## ---- echo=FALSE--------------------------------------------------------------
library(DiagrammeR)
grstr = "digraph linear {
node [shape=oval]
Y1; Y2; Y3; Y4
node [shape=box]
Neutral; 'Strongly disagree'; Disagree; Agree; 'Strongly agree'
edge [label='1']
Y1->Neutral; Y2->Y4; Y3->'Strongly disagree'; Y4->'Strongly agree'
edge[label='0']
Y1->Y2; Y2->Y3; Y3->Disagree; Y4->Agree;
}"
tree=grViz(grstr)
tree
## ---- echo=F------------------------------------------------------------------
five_cmx = matrix(c(0, 0, 1, 0, 0,
0, 0, NA, 1, 1,
1, 0, NA, NA, NA,
NA, NA, NA, 0, 1), nrow = 5)
cats = c('Strongly disagree', 'Disagree', 'Neither agree or disagree', 'Agree', 'Strongly Agree')
z=cbind(cats,as.data.frame(five_cmx))
names(z)=c(' ',paste0('Y',1:4))
flextable(z) |> colformat_num(na_str = "NA") |> bg(j=grep("Y", colnames(z), value = TRUE), bg='skyblue', part='body')
## -----------------------------------------------------------------------------
five_wide_single.tree = WtoW_single.tree(
data = five_wide,
cmx = five_cmx,
id.col = 1,
resp.col = c(3:7),
covar.col = 2
)
str(five_wide_single.tree)
## ---- eval=FALSE--------------------------------------------------------------
# five_wide_single.tree = WtoW_single.tree(
# data = five_wide,
# cmx = five_cmx,
# id.col = "id",
# resp.col = c("item1", "item2", "item3"),
# covar.col = "gender"
# )
## -----------------------------------------------------------------------------
five_long_single.tree = WtoL_single.tree(
data = five_wide,
cmx = five_cmx,
id.col = "id",
resp.col = c("item1","item2","item3"),
covar.col = "gender")
str(five_long_single.tree)
## ---- echo=FALSE--------------------------------------------------------------
five_cmx.2 = matrix(c(0, 0, 1, 0, 0,
0, 1, NA, 2, 3), nrow = 5)
five_cmx.2
## ---- eval=FALSE--------------------------------------------------------------
# matrices_list = list(five_cmx, five_cmx.2)
#
# items_list = list(c('item1', 'item3', 'item5'), c('item2', 'item4'))
#
# five_wide_multiple.tree = WtoW_multiple.tree(
# data = five_wide,
# cmx_list = matrices_list,
# resp.col_list = items_list,
# id.col = "id",
# covar.col = "gender"
# )
## -----------------------------------------------------------------------------
VerbAgg$resp = as.integer(VerbAgg$resp)
## ---- echo=FALSE--------------------------------------------------------------
lintree = 'graph TB
X1((X1)) --0--> L1[no]
X1((X1)) --1--> X2((X2))
X2((X2)) --0--> L2[perhaps]
X2((X2)) --1--> L3[yes]'
DiagrammeR::mermaid(lintree)
lincmx = graph2mx(lintree)
cats = c('no', 'perhaps', 'yes')
z=cbind(cats,as.data.frame(lincmx))
names(z)=c(' ',paste0('X',1:2))
flextable(z) |> colformat_num(na_str = "NA") |> bg(j=grep("X", colnames(z), value = TRUE), bg='skyblue', part='body')
## -----------------------------------------------------------------------------
VerbAgg$resp = as.integer(VerbAgg$resp)
VerbAgg_wide = LtoW_single.tree(
data = VerbAgg,
cmx = lincmx,
id.col = "id",
item.col = "item",
resp.col = "resp",
covar.col = c("Anger","Gender","btype","situ","mode"))
str(VerbAgg_wide)
## -----------------------------------------------------------------------------
covdata = VerbAgg_wide[,2:3]
VerbAgg_wide = VerbAgg_wide[,-(1:3)]
itemdesign = data.frame(node = factor(rep(1:2, each=24)))
itemdesign$mode = factor(ifelse(grepl('Do', names(VerbAgg_wide)), 'Do', 'Want'))
## -----------------------------------------------------------------------------
VerbAgg_long = LtoL_single.tree(
data = VerbAgg,
cmx = lincmx,
id.col = "id",
item.col = "item",
resp.col = "resp",
covar.col = c("Anger","Gender","btype","situ","mode"))
str(VerbAgg_long)
## ---- eval=FALSE--------------------------------------------------------------
# model1 = glmer(resp ~ 0 + node:item + (1 | id), family=binomial, data=VerbAgg_long)
# model2 = glmer(resp ~ 0 + node:item + (0 + node | id), family=binomial, data=VerbAgg_long)
## -----------------------------------------------------------------------------
model1 = glmer(resp ~ 0 + node + (0 + node | item) + (1 | id), family=binomial, data=VerbAgg_long)
model2 = glmer(resp ~ 0 + node + (0 + node | item) + (0 + node | id), family=binomial, data=VerbAgg_long)
## -----------------------------------------------------------------------------
mm1 = "F1=1-48"
mm2 = "F1=1-24
F2=25-48
COV=F1*F2"
## ---- eval=FALSE--------------------------------------------------------------
# mirt1 = mirt(data = VerbAgg_wide, model = mm1, itemtype="Rasch", verbose=FALSE)
# mirt2 = mirt(data = VerbAgg_wide, model = mm2, itemtype="Rasch", verbose=FALSE)
## -----------------------------------------------------------------------------
mirt1 = mixedmirt(data=VerbAgg_wide, model=mm1, fixed = ~ 0 + node, random= ~ 1 | items,
itemdesign=itemdesign, SE=TRUE, verbose=FALSE)
mirt2 = mixedmirt(data=VerbAgg_wide, model=mm2, fixed = ~ 0 + node, random= ~ 1 | items,
itemdesign=itemdesign, SE=TRUE, verbose=FALSE)
## -----------------------------------------------------------------------------
anova(model1, model2)
anova(mirt1, mirt2)
## -----------------------------------------------------------------------------
mytree = 'graph TB
X1 --0--> no
X1 --1--> X2
X2 --0--> perhaps
X2 --1--> yes'
DiagrammeR::mermaid(mytree)
## -----------------------------------------------------------------------------
mytree = 'graph TB
X1((X1)) --0--> L1[no]
X1((X1)) --1--> X2((X2))
X2((X2)) --0--> L2[perhaps]
X2((X2)) --1--> L3[yes]'
## -----------------------------------------------------------------------------
mmx = graph2mx(mytree)
mmx
## -----------------------------------------------------------------------------
tree1 = 'graph TB
X1((X1)) --1--> L1[Neutral]
X1((X1)) --0--> X2((X2))
X2((X2)) --0--> X3((X3))
X2((X2)) --1--> X4((X4))
X3((X3)) --1--> L2[Strongly disagree]
X3((X3)) --0--> L3[Disagree]
X4((X4)) --0--> L4[Agree]
X4((X4)) --1--> L5[Strongly agree]'
DiagrammeR::mermaid(tree1)
## -----------------------------------------------------------------------------
graph2mx(tree1)
## ---- echo=FALSE--------------------------------------------------------------
mytree = 'graph TD
X1((X1)) --1--> L1[Neutral]
X1((X1)) --0--> X2((X2))
X2((X2)) --0--> X3((X3))
X2((X2)) --1--> X3((X3))
X3((X3)) --1--> L2[Strongly disagree]
X3((X3)) --0--> L3[Disagree]
X3((X3)) --0--> L4[Agree]
X3((X3)) --1--> L5[Strongly agree]'
DiagrammeR::mermaid(mytree)
## ---- echo=FALSE--------------------------------------------------------------
tree2 = 'graph TD
X1((X1)) --1--> L1[Neutral]
X1((X1)) --0--> X2((X2))
X2((X2)) --0--> X3((X3))
X2((X2)) --1--> X4((X3))
X3((X3)) --1--> L2[Strongly disagree]
X3((X3)) --0--> L3[Disagree]
X4((X3)) --0--> L4[Agree]
X4((X3)) --1--> L5[Strongly agree]'
DiagrammeR::mermaid(tree2)
## -----------------------------------------------------------------------------
mmx = graph2mx(tree2)
mmx
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.