Margins package in R generating NAs in results

152 Views Asked by At

This is my first post, so hopefully I'm doing this right.

I'm running a polr model in R and am attempting to generate some marginal effects plots using the margins package. When I view the results, everything except for the AME has a value of NA. Can anyone help me figure out what I'm doing wrong?

Here's a copy of my results:

    factor     AME SE  z  p lower upper
        Gender -0.0452 NA NA NA    NA    NA
    IsNonwhite  0.0087 NA NA NA    NA    NA
  PartyNumeric  0.1898 NA NA NA    NA    NA
 PartyStrength -0.0358 NA NA NA    NA    NA

And here's a copy of my code:

debate <- debate  %>% 
  mutate(UnfairIndex = as.numeric((debate$UnfairCountTrump-debate$UnfairCountBiden)))

debate<- debate%>% 
  mutate(AbsUnfairIndex = abs(debate$UnfairIndex)) 

debate <- debate  %>% 
  mutate(X7PartyScale=case_when(debate$StrongRep ==1 ~ 3,
                                debate$StrongRep ==2 ~ 2,
                                debate$StrongDem ==1 ~ -3,
                                debate$StrongDem ==2 ~ -2,
                                debate$IndCloser ==1 ~ 1,
                                debate$IndCloser ==2 ~ -1,
                                debate$IndCloser ==3 ~ 0))

debate<- debate %>%
  mutate(PartyFactor=as.factor(case_when(debate$X7PartyScale==-3 ~ "Democrat",
                              debate$X7PartyScale==-2 ~ "Democrat",
                              debate$X7PartyScale==-1 ~ "Democrat",
                              debate$X7PartyScale==0 ~ "Independent",
                              debate$X7PartyScale==1 ~ "Republican",
                              debate$X7PartyScale==2 ~ "Republican",
                              debate$X7PartyScale==3 ~ "Republican")))

debate<- debate %>%
  mutate(PartyStrength= abs(debate$X7PartyScale))

debate<- debate %>%
  mutate(PartyNumeric = as.numeric(PartyFactor) - 1)

interact<- polr(factor(AbsUnfairIndex) ~ PartyStrength + PartyNumeric + PartyStrength*PartyNumeric + Gender + IsNonwhite, data=debate, Hess=TRUE)
summary(interact)

interactmargins2<- margins(interact)
summary(interactmargins2)

Editing to provide a sample of the data:

structure(list(Consent = c(1L, 1L, 1L, 1L, 1L, 1L), Gender = c(2L, 
2L, 2L, 2L, 1L, 1L), IsFemale = c(0L, 0L, NA, 0L, NA, 1L), Age = c(19L, 
19L, 19L, 19L, 19L, 20L), Race = c(1L, 1L, 4L, 1L, 4L, 1L), IsNonwhite = c(0L, 
0L, 1L, 0L, 1L, 0L), PartyID = c(1L, 2L, 1L, 1L, 1L, 1L), StrongDem = c(1L, 
NA, 1L, 1L, 2L, 2L), StrongRep = c(NA, 1L, NA, NA, NA, NA), IndCloser = c(NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_
), DemImportant = c(1L, NA, 2L, 1L, 2L, 3L), DemDescribe = c(2L, 
NA, 2L, 1L, 2L, 2L), DemWeThey = c(2L, NA, 2L, 2L, 3L, 4L), DemThink = c(1L, 
NA, 2L, 1L, 2L, 1L), RepImportant = c(NA, 1L, NA, NA, NA, NA), 
    RepDescribe = c(NA, 1L, NA, NA, NA, NA), RepWeThey = c(NA, 
    2L, NA, NA, NA, NA), RepThink = c(NA, 1L, NA, NA, NA, NA), 
    FeelingThermTrump = c(0L, 100L, 0L, 0L, 0L, NA), FeelingThermBiden = c(64L, 
    NA, 100L, 95L, 50L, 100L), WatchLive = c(1L, 1L, 1L, 1L, 
    1L, 1L), WatchAfter = c(1L, 1L, 1L, 1L, 1L, 1L), WatchDebate = structure(c(2L, 
    2L, 2L, 2L, 2L, 2L), .Label = c("", "WatchAll", "WatchNone", 
    "WatchSome"), class = "factor"), FollowCoverage = c(1L, 1L, 
    1L, 1L, 2L, 1L), FairnessHonesty = c(4L, 2L, 5L, 4L, 5L, 
    4L), WhoUnfair = structure(c(5L, 4L, 6L, 5L, 9L, 5L), .Label = c("", 
    "1,2", "1,2,3", "1,3", "2", "2,3", "3", "3,4", "4"), class = "factor"), 
    WhoDishonest = structure(c(6L, 2L, 6L, 6L, 5L, 6L), .Label = c("", 
    "Biden", "Moderator", "More than one", "Not Sure", "Trump"
    ), class = "factor"), TrumpFairnessRater = c(0L, 9L, 1L, 
    2L, 5L, NA), BidenFairnessRater = c(7L, 2L, 9L, 7L, 5L, 10L
    ), WallaceFairnessRater = c(10L, 2L, 6L, 4L, 8L, 10L), TrumpHonestyRater = c(1L, 
    10L, 1L, 2L, 5L, NA), BidenHonestyRater = c(6L, 2L, 9L, 10L, 
    5L, 10L), WallaceHonestyRater = c(10L, 0L, 6L, 8L, 8L, 10L
    ), Voting1 = c(1L, 1L, 1L, 1L, 1L, 1L), WhoVote1 = c(2L, 
    1L, 2L, 2L, 2L, 2L), WhoVoteLean1 = c(NA_integer_, NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), TrustGov = c(3L, 
    3L, 4L, 3L, 2L, 5L), Q4_First.Click = c(14.215, 460.794, 
    160.691, 0, 8.308, 0), Q4_Last.Click = c(356.559, 461.175, 
    407.781, 0, 104.224, 0), Q4_Page.Submit = c(390.864, 461.601, 
    414.195, 449.768, 415.194, 414.337), Q4_Click.Count = c(24L, 
    2L, 8L, 0L, 3L, 0L), BidenInterruptTrump = c(21L, 19L, 21L, 
    22L, 20L, 25L), TrumpInterruptBiden = c(19L, 21L, 19L, 19L, 
    19L, 19L), ModeratorInterruptTrump = c(24L, 20L, 22L, 20L, 
    19L, 25L), ModeratorInterruptBiden = c(24L, 24L, 20L, 21L, 
    21L, 21L), BidenAggressive = c(20L, 18L, 22L, 20L, 20L, 24L
    ), TrumpAggressive = c(18L, 19L, 18L, 18L, 18L, 18L), ModeratorAggressivetoTrump = c(20L, 
    19L, 20L, 19L, 19L, 19L), ModeratorAggressivetoBiden = c(22L, 
    23L, 20L, 21L, 20L, 21L), BidenLie = c(8L, 6L, 8L, 9L, 9L, 
    8L), TrumpLie = c(8L, 11L, 8L, 10L, 10L, 8L), BidenMischarTrump = c(12L, 
    12L, 14L, 10L, 12L, 15L), TrumpMischarBiden = c(9L, 12L, 
    9L, 10L, 11L, 9L), ModeratorFavorTrump = c(13L, 14L, 10L, 
    13L, 11L, 12L), ModeratorFavorBiden = c(11L, 8L, 11L, 9L, 
    11L, 10L), UnfairCountTrump = c(3L, 4L, 4L, 2L, 1L, 1L), 
    UnfairCountBiden = c(5L, 2L, 5L, 3L, 2L, 5L), WhoVote2 = c(2L, 
    1L, 2L, 2L, 2L, 2L), WhoVoteLean2 = c(NA_integer_, NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_), TrustGov.1 = c(3L, 
    3L, 4L, 3L, 3L, 3L), OfficialsCare = c(3L, 3L, 3L, 3L, 5L, 
    7L), LoseTouch = c(2L, 4L, 1L, 3L, 3L, 2L), OnlyCareVotes = c(2L, 
    4L, 1L, 4L, 2L, 1L)), row.names = c(NA, 6L), class = "data.frame")
0

There are 0 best solutions below