slepmst
slepmst

Reputation: 23

Error in plot_model(type="diag") : arguments imply differing number of rows error

I was doing a regression analysis and made regression model with this code,

regrs_2 <- lm(gii.score ~ hof.pdi + hof.idv + hof.mas + hof.uai + hof.ltowvs + 
                hof.ivr + ctnt.dummy.asia + ctnt.dummy.europe + ctnt.dummy.noram + 
                ctnt.dummy.africa + ctnt.dummy.oceania, data = data)
library(sjPlot)
plot_model(regrs_2, type="diag")

and run this code:

sjPlot::plot_model(regrs_2,type="diag")

At this time, an error occurred, saying:

Error in data.frame(x = fitted_, y = res_) : 
  arguments imply differing number of rows: 61, 60**

But when I changed the type= argument of plot_model from "diag" to "std" or "est" there is no error.

How can I resolve this problem?

This is my data:

structure(list(X = c(4L, 5L, 11L, 31L, 32L, 41L, 57L, 91L, 93L, 
94L, 1L, 2L, 3L, 6L, 7L, 8L, 9L, 10L, 12L, 13L, 14L, 15L, 16L, 
17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 
30L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 42L, 43L, 44L, 45L, 
46L, 47L, 48L, 49L, 50L, 51L, 52L, 53L, 54L, 55L, 56L, 58L, 59L, 
60L, 61L, 62L, 63L, 64L, 65L, 66L, 67L, 68L, 69L, 70L, 71L, 72L, 
73L, 74L, 75L, 76L, 77L, 78L, 79L, 80L, 81L, 82L, 83L, 84L, 85L, 
86L, 87L, 88L, 89L, 90L, 92L), ctnt = structure(c(6L, 3L, 6L, 
5L, 3L, 6L, 6L, 3L, 6L, 6L, 2L, 2L, 2L, 4L, 6L, 6L, 6L, 6L, 6L, 
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 1L, 2L, 1L, 1L, 1L, 1L, 
1L, 3L, 3L, 5L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
6L, 6L, 6L, 6L, 6L, 3L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 2L, 2L, 
2L, 2L, 1L, 1L, 3L, 1L, 2L, 3L, 3L, 3L, 3L), .Label = c("남아메리카", 
"북아메리카", "아시아", "아프리카", "오세아니아", "유럽"), class = "factor"), 
    c_code = c(7L, 20L, 34L, 61L, 62L, 90L, 351L, 971L, 994L, 
    995L, 1L, 1L, 1L, 27L, 30L, 31L, 32L, 33L, 36L, 39L, 40L, 
    41L, 43L, 44L, 45L, 46L, 47L, 48L, 49L, 51L, 52L, 54L, 55L, 
    56L, 57L, 58L, 60L, 63L, 64L, 65L, 66L, 81L, 82L, 84L, 86L, 
    91L, 92L, 98L, 212L, 213L, 223L, 226L, 233L, 234L, 250L, 
    251L, 255L, 256L, 260L, 263L, 352L, 353L, 354L, 355L, 356L, 
    357L, 358L, 359L, 370L, 371L, 372L, 373L, 374L, 375L, 380L, 
    381L, 382L, 385L, 387L, 420L, 421L, 502L, 503L, 506L, 507L, 
    593L, 598L, 852L, 868L, 876L, 880L, 962L, 966L, 972L), country = structure(c(73L, 
    27L, 80L, 6L, 43L, 86L, 71L, 3L, 8L, 33L, 16L, 25L, 87L, 
    79L, 37L, 62L, 11L, 32L, 40L, 47L, 72L, 82L, 7L, 36L, 24L, 
    81L, 65L, 70L, 34L, 68L, 58L, 4L, 13L, 17L, 19L, 91L, 55L, 
    69L, 63L, 77L, 84L, 49L, 51L, 92L, 18L, 42L, 66L, 44L, 61L, 
    2L, 56L, 15L, 35L, 64L, 74L, 30L, 83L, 88L, 93L, 94L, 54L, 
    45L, 41L, 1L, 57L, 22L, 31L, 14L, 53L, 52L, 29L, 59L, 5L, 
    10L, 89L, 76L, 60L, 21L, 12L, 23L, 78L, 38L, 28L, 20L, 67L, 
    26L, 90L, 39L, 85L, 48L, 9L, 50L, 75L, 46L), .Label = c("Albania", 
    "Algeria", "Arab countries", "Argentina", "Armenia", "Australia", 
    "Austria", "Azerbaijan", "Bangladesh", "Belarus", "Belgium", 
    "Bosnia", "Brazil", "Bulgaria", "Burkina Faso", "Canada", 
    "Chile", "China", "Colombia", "Costa Rica", "Croatia", "Cyprus", 
    "Czech Rep", "Denmark", "Dominican Rep", "Ecuador", "Egypt", 
    "El Salvador", "Estonia", "Ethiopia", "Finland", "France", 
    "Georgia", "Germany", "Ghana", "Great Britain", "Greece", 
    "Guatemala", "Hong Kong", "Hungary", "Iceland", "India", 
    "Indonesia", "Iran", "Ireland", "Israel", "Italy", "Jamaica", 
    "Japan", "Jordan", "Korea South", "Latvia", "Lithuania", 
    "Luxembourg", "Malaysia", "Mali", "Malta", "Mexico", "Moldova", 
    "Montenegro", "Morocco", "Netherlands", "New Zealand", "Nigeria", 
    "Norway", "Pakistan", "Panama", "Peru", "Philippines", "Poland", 
    "Portugal", "Romania", "Russia", "Rwanda", "Saudi Arabia", 
    "Serbia", "Singapore", "Slovak", "South Africa", "Spain", 
    "Sweden", "Switzerland", "Tanzania", "Thailand", "Trinidad and Tobago", 
    "Turkey", "U.S.A.", "Uganda", "Ukraine", "Uruguay", "Venezuela", 
    "Vietnam", "Zambia", "Zimbabwe"), class = "factor"), hof.pdi = c(44L, 
    NA, 24L, 11L, 39L, 31L, 28L, 40L, NA, NA, 12L, NA, 13L, NA, 
    26L, 11L, 30L, 33L, 17L, 20L, 43L, 9L, 2L, 10L, 4L, 7L, 7L, 
    33L, 10L, 29L, 41L, 19L, 34L, 28L, 32L, 41L, 1L, 45L, 5L, 
    37L, 29L, 21L, 26L, 35L, 40L, 38L, 22L, 25L, 35L, NA, NA, 
    NA, NA, NA, NA, NA, NA, NA, NA, NA, 13L, 6L, NA, NA, 23L, 
    NA, 8L, 35L, 14L, 15L, 13L, NA, NA, NA, NA, 42L, NA, 36L, 
    NA, 24L, 1L, 46L, 31L, 10L, 46L, 39L, 27L, 33L, 18L, 16L, 
    40L, NA, NA, 3L), hof.idv = c(21L, NA, 25L, 46L, 4L, 19L, 
    13L, 20L, NA, NA, 44L, NA, 47L, NA, 17L, 44L, 40L, 38L, 44L, 
    41L, 14L, 35L, 28L, 45L, 39L, 38L, 36L, 32L, 34L, 6L, 14L, 
    23L, 20L, 10L, 3L, 2L, 12L, 15L, 42L, 9L, 9L, 23L, 7L, 9L, 
    9L, 24L, 4L, 22L, 23L, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
    NA, NA, 32L, 37L, NA, NA, 30L, NA, 33L, 14L, 32L, 37L, 32L, 
    NA, NA, NA, NA, 11L, NA, 16L, NA, 29L, 26L, 31L, 8L, 5L, 
    1L, 43L, 18L, 11L, 6L, 21L, 9L, NA, NA, 27L), hof.mas = c(11L, 
    NA, 16L, 33L, 20L, 19L, 9L, 27L, NA, NA, 26L, NA, 34L, NA, 
    31L, 2L, 28L, 17L, 44L, 40L, 16L, 40L, 42L, 37L, 3L, 24L, 
    43L, 36L, 37L, 16L, 39L, 30L, 23L, 7L, 36L, 41L, 25L, 36L, 
    32L, 22L, 10L, 46L, 14L, 15L, 37L, 30L, 25L, 17L, 27L, NA, 
    NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 25L, 38L, NA, NA, 
    21L, NA, 6L, 15L, 4L, 45L, 8L, NA, NA, NA, NA, 17L, NA, 15L, 
    NA, 31L, 1L, 12L, 15L, 5L, 18L, 35L, 13L, 31L, 32L, 38L, 
    29L, NA, NA, 21L), hof.uai = c(43L, NA, 37L, 17L, 14L, 36L, 
    3L, 27L, NA, NA, 14L, NA, 13L, NA, 4L, 18L, 42L, 37L, 35L, 
    30L, 39L, 20L, 28L, 9L, 6L, 7L, 16L, 41L, 25L, 38L, 35L, 
    37L, 31L, 37L, 33L, 31L, 10L, 12L, 15L, 32L, 24L, 40L, 36L, 
    8L, 8L, 11L, 28L, 21L, 27L, NA, NA, NA, NA, NA, NA, NA, NA, 
    NA, NA, NA, 28L, 9L, NA, NA, 44L, NA, 21L, 36L, 25L, 23L, 
    22L, NA, NA, NA, NA, 40L, NA, 33L, NA, 29L, 17L, 2L, 42L, 
    37L, 37L, 26L, 1L, 7L, 19L, 5L, 22L, NA, NA, 34L), hof.ltowvs = c(50L, 
    43L, 29L, 8L, 38L, 27L, 14L, 9L, 37L, 22L, 21L, 2L, 12L, 
    19L, 26L, 41L, 51L, 39L, 35L, 37L, 32L, 47L, 36L, 31L, 20L, 
    33L, 20L, 22L, 52L, 11L, 10L, 7L, 25L, 16L, 2L, 5L, 24L, 
    13L, 18L, 46L, 17L, 55L, 1L, 34L, 54L, 31L, 30L, 3L, 3L, 
    12L, 7L, 13L, 23L, 2L, 6L, NA, 19L, 10L, 15L, 4L, 40L, 10L, 
    14L, 37L, 28L, NA, 22L, 42L, 51L, 42L, 51L, 45L, 37L, 50L, 
    53L, 32L, 48L, 35L, 44L, 44L, 49L, NA, 7L, NA, NA, NA, 12L, 
    37L, 2L, NA, 28L, 5L, 21L, 22L), hof.ivr = c(10L, 25L, 29L, 
    50L, 24L, 33L, 20L, 21L, 11L, 19L, 47L, 37L, 47L, 43L, 34L, 
    47L, 40L, 32L, 18L, 17L, 10L, 45L, 43L, 48L, 49L, 53L, 38L, 
    16L, 26L, 31L, 58L, 42L, 41L, 47L, 55L, 2L, 40L, 27L, 52L, 
    31L, 30L, 27L, 16L, 22L, 12L, 14L, 1L, 26L, 13L, 19L, 28L, 
    8L, 51L, 56L, 23L, 31L, 24L, 35L, 27L, 15L, 39L, 44L, 46L, 
    5L, 45L, 49L, 40L, 6L, 6L, 3L, 6L, 9L, NA, 5L, 4L, 15L, 10L, 
    20L, 29L, 16L, 15L, NA, 57L, NA, NA, NA, 36L, 7L, 54L, NA, 
    10L, 28L, 35L, NA), gii.score = c(39.32, 28.91, 49.07, 55.22, 
    29.79, 37.81, 46.61, 40.06, 30.1, 33.83, 55.73, 30.6, 60.1, 
    37.45, 40.28, 61.58, 50.91, 53.59, 43, 46.4, 38.2, 68.3, 
    54.07, 62.42, 57.7, 62.4, 53.8, 40.16, 57.05, 34.87, 38.03, 
    34.3, 34.95, 41.2, 36.41, 22.77, 45.98, 31.05, 55.92, 59.36, 
    38.1, 53.97, 56.26, 38.35, 47.47, 31.74, 23.07, 28.37, 33.19, 
    24.38, 28.37, 28.68, 28.04, 23.72, 30.09, 24.17, 27, 27.65, 
    24.64, 22.52, 59.02, 59.13, 57.02, 30.74, 50.48, 43.51, 59.97, 
    42.16, 42.26, 45.51, 52.81, 40.53, 37.31, 38.23, 36.45, 36.47, 
    41.23, 41.7, 32.31, 51.32, 42.99, 28.84, 29.31, 38.59, 36.8, 
    26.87, 35.76, 57.23, 32.18, 29.95, 23.71, 33.78, 40.65, 53.54
    ), ctnt.dummy.asia = c(0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 
    0, 0, 1, 1, 1, 1), ctnt.dummy.europe = c(1, 0, 1, 0, 0, 1, 
    1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
    1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 
    1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), ctnt.dummy.noram = c(0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0), ctnt.dummy.africa = c(0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
    1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), ctnt.dummy.oceania = c(0, 
    0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), ctnt.dummy.souam = c(0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0)), row.names = c(NA, 
-94L), class = "data.frame")

Upvotes: 2

Views: 502

Answers (1)

jay.sf
jay.sf

Reputation: 72994

Inspecting the code of the sjPlot::plot_model function reveals that sjPlot:::plot_diag_linear method is used and yields the error.

# sjPlot:::plot_diag_linear(regrs_2, geom.colors="red", dot.size=1, line.size=1)
# # Error in data.frame(x = fitted_, y = res_) : 
# #   arguments imply differing number of rows: 61, 60

Going a level deeper into the code we get to the plot list, where sjPlot:::diag_qq is failing.

sjPlot:::diag_vif(regrs_2)

enter image description here

# sjPlot:::diag_qq(regrs_2, dot.size=1, line.size=1)  ## FAILS!
# # Error in data.frame(x = fitted_, y = res_) : 
# #   arguments imply differing number of rows: 61, 60

sjPlot:::diag_norm(regrs_2, geom.colors="red")
# Warning message:
#   Removed 101 row(s) containing missing values (geom_path). 

enter image description here

sjPlot:::diag_ncv(regrs_2, dot.size=1, line.size=1)
# `geom_smooth()` using formula 'y ~ x'

enter image description here

Also warnings are thrown. The issue might be due to statistical reasons, since the example on ?sjPlot::plot_model is working fine.

Only a partial answer, I know, hoping to help you somehow.

Upvotes: 3

Related Questions