Skip to content

Add by and levels arguments to the meandeg term #624

Description

@martinamorris

Discussed in #623

Originally posted by martinamorris July 15, 2025
Context: Hoping to use the summary() function to calculate mean degree by group.

The term operators in ergm 4 include an "interaction" operator (demonstrated in the Advanced ERGM workshop, section 4.4).

I was hoping to use this to calculate the mean degree by group in a summary call: summary(nw ~ meandeg*nodefactor("Attribute", levels=T). But this doesn't produce the expected result. Reprex below.

library(ergm)
data("faux.mesa.high")
mesa <- faux.mesa.high

# meandeg, overall (works as expected)
## using direct calculation
2*network.edgecount(mesa) / network.size(mesa)
## using summary
summary(mesa ~ meandeg)

# meandeg by grade (not as expected)

## nodes by grade 
nodes.by.grade <- table(mesa %v% "Grade")
## edges by grade (note, sums to 406, so is actually "stubs" by grade)
stubs.by.grade <- summary(mesa ~ nodefactor("Grade", levels=T))
## meandeg by grade using stubs/nodes calculation 
stubs.by.grade/nodes.by.grade
### using summary and interaction term operator with ":"
summary(mesa ~ meandeg:nodefactor("Grade", levels=TRUE))

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions