3
$\begingroup$

So I'm having some questions about a regression model I'm trying to fit The dependent variable is a continuous interval scaled index reaching from 0 to 100. It's severely left-skewed and most observations range somewhere between 70 and 90. In total I have ~75 observations and I'm trying to fit eight independent variables.

Is a linear OLS regression model appropriate here? I looked at the fitted value and it over predicts only once and very limited, by only 3 points. Underprediction is not present

Some have recommended using logistic regression. Is this possible when the dependent variable is not 0 or 1, but after transformation something like 0.85? Also the linear model is heteroscedastic to some extent. now I've read, that heteroscedasticity leads to biased and inconsistent estimates in logistic regression? How could this be treated? I'm somewhat confused as to the absurd number of possibilities with every recommendation saying something else.

Here you can find the data and the code I used in terms of linear regression with robust standard errors in R

structure(list(ID = c("Afghanistan", "Albania", "Algeria", "Angola", 
                            "Azerbaijan", "Bahrain", "Bangladesh", "Belarus", "Benin", "Bolivia", 
                            "Burkina Faso", "Burma/Myanmar", "Burundi", "Cambodia", "Cameroon", 
                            "Central African Republic", "Chad", "China", "Cuba", "Democratic Republic of the Congo", 
                            "Djibouti", "Egypt", "Eritrea", "Eswatini", "Ethiopia", "Fiji", 
                            "Gabon", "Guinea", "Haiti", "Honduras", "Hungary", "Iran", "Iraq", 
                            "Jordan", "Kazakhstan", "Kenya", "Kuwait", "Kyrgyzstan", "Laos", 
                            "Lebanon", "Madagascar", "Malawi", "Malaysia", "Mali", "Mauritania", 
                            "Morocco", "Mozambique", "Nicaragua", "Niger", "Nigeria", "Oman", 
                            "Pakistan", "Papua New Guinea", "Philippines", "Qatar", "Republic of the Congo", 
                            "Russia", "Rwanda", "Saudi Arabia", "Serbia", "Singapore", "Somalia", 
                            "South Sudan", "Sudan", "Syria", "Tajikistan", "Tanzania", "Thailand", 
                            "Togo", "Turkey", "Turkmenistan", "Uganda", "Ukraine", "United Arab Emirates", 
                            "Uzbekistan", "Venezuela", "Vietnam", "Zambia", "Zimbabwe"), 
                     Dep_Var = c(84.26, 89.81, 92.13, 90.74, 96.3, 78.7, 93.52, 
                                 19.44, 70.83, 96.3, 89.81, 86.11, 33.33, 68.52, 71.3, 75.93, 
                                 88.89, 81.94, 100, 80.56, 100, 84.26, 93.52, 89.81, 80.56, 
                                 88.89, 81.48, 78.7, 87.04, 100, 76.85, 64.35, 96.3, 100, 
                                 89.35, 93.52, 100, 92.13, 96.3, 85.19, 95.37, 57.41, 75, 
                                 72.22, 77.78, 93.52, 80.56, 16.67, 61.11, 85.65, 100, 96.3, 
                                 83.8, 100, 86.11, 97.22, 87.04, 90.74, 94.44, 100, 85.19, 
                                 60.19, 86.11, 91.67, 86.11, 73.15, 50, 82.41, 73.15, 77.78, 
                                 58.33, 93.52, 92.59, 89.81, 96.3, 87.04, 96.3, 70.83, 87.96
                     ), Var1 = c(4.127, 5.251, 5.296, 6.541, 6.672, 6.414, 6.78, 
                                 6.062, 7.056, 5.78, 5.786, 4.552, 3.537, 5.527, 5.608, 6.275, 
                                 3.147, 5.291, 6.55, 4.069, 4.996, 4.586, 4.605, 6.525, 5.409, 
                                 6.302, 6.324, 5.558, 3.996, 6.325, 5.951, 4.481, 3.772, 4.786, 
                                 6.746, 5.645, 6.613, 6.603, 6.306, 3.814, 5.482, 6.14, 6.521, 
                                 4.924, 5.121, 5.355, 5.101, 7.214, 6.554, 6.047, 5.636, 7.175, 
                                 4.735, 5.151, 6.116, 4.799, 5.495, 6.855, 6.197, 6.398, 7.468, 
                                 3.565, 3.891, 5.121, 3.319, 6.826, 5.235, 5.737, 5.703, 4.748, 
                                 5.693, 6.474, 5.836, 6.91, 5.616, 5.979, 5.604, 6.875, 6.48
                     ), Var2 = c(7.71, 7.85, 6.22, 6.93, 5.95, 5.98, 7.46, 1.26, 
                                 3.65, 3.42, 5.84, 3.31, 8.72, 7.88, 6.46, 8.05, 8.86, 5.62, 
                                 4.89, 6.42, 7.13, 5.63, 7.67, 2.84, 4.66, 4.57, 5.63, 6.62, 
                                 8.63, 8.64, 5.01, 3.43, 8.81, 5.72, 6.67, 5.12, 7.09, 6.05, 
                                 3.51, 7.46, 6.88, 5.64, 4.48, 5.68, 7.64, 4.56, 5.4, 7.27, 
                                 3.74, 7.67, 5.2, 7.83, 8.17, 7.09, 8.66, 9.11, 4.12, 2.87, 
                                 6.84, 6.36, 1.83, 8.71, 7.95, 6.59, 7.53, 6.92, 3.77, 6.72, 
                                 5.77, 4.83, 8.15, 5.81, 4.23, 4.3, 5.46, 8.92, 1.94, 5.48, 
                                 7.55), Var3 = c(1.51522335168878, 4.15325778828397, 2.94875838540978, 
                                                 1.00628430938346, 25.4230503312376, 8.18998374332489, 1.04538591988069, 
                                                 1.25351605643943, 1.03389499888613, 1.14765788536537, 1.26573001102583, 
                                                 1.07401182190831, 1.02601777187271, 1.03639332007889, 1.62605356699817, 
                                                 1.92725573397033, 1.01254164138481, 1.03505721838858, 3.46173219653658, 
                                                 1.08295832426121, 57.2882616377008, 1.20022298864129, NA, 
                                                 1.43549075453128, 1.01873682901296, 1.44946193787762, 1.64439543970553, 
                                                 1.00783008956213, 1.14205709505493, 1.08208397251952, 2.40225911107622, 
                                                 22.5235306849493, 1.36123323295883, 1.14848994633969, 1.27546825552435, 
                                                 1.15597071197187, 48.3011823156329, 1.24779693041552, 1, 
                                                 2.15232361681418, 1.10011380715122, 1.05904852323133, 1.67293114440204, 
                                                 1, 1.02209604887292, 1.26595913129412, 1.57959491321159, 
                                                 1.04583300104408, 1.00857974540892, 1.16022802219023, 206.447814325508, 
                                                 1.3232281172556, 1.01139457132996, 1.10081706683103, 3.18921374388388, 
                                                 1.0557568170143, 1.23896346376779, 1.03959784429336, 17.1956183236117, 
                                                 1.80633839574657, 10.3099601319805, 1.02590186237628, 1.02711959279389, 
                                                 3.88462180786233, 1.03514910690513, 6.23547964396164, 1.00861987775186, 
                                                 1.87180599797356, 1.19796183444303, 24.2411476428364, NA, 
                                                 1.02032998088937, 1.91697325378271, 5.22699733044137, 2.96243967880312, 
                                                 3.06551946990564, 1.07671406220387, 1.1343707501751, 1.01365610166913
                                 ), Var4 = c(5.02115486913067, 53.5285741103671, 39.4834327892571, 
                                             29.7359115979868, 47.9358701966989, 235.03977126673, 18.5573982408046, 
                                             66.6329529282582, 12.1943267185875, 35.520687621416, 7.748396902346, 
                                             14.0781314341043, 2.61247472515742, 16.4312138876475, 14.9790917560296, 
                                             4.67907440636335, 7.09540310138533, 102.616791283744, 88.2181889125004, 
                                             5.45216212311342, 34.0884625440838, 30.2003134971543, NA, 
                                             38.3702699384472, 8.57501351042922, 62.2004642089247, 76.6736686126914, 
                                             10.6413123736656, 7.5458791774842, 25.7491219067443, 164.757418389402, 
                                             55.2031078932382, 59.5510901036816, 43.3032934593257, 97.3114520688729, 
                                             18.165469164389, 320.319801025988, 13.0939299165512, 25.3489827724281, 
                                             77.8431685692976, 5.2221980923047, 4.11552340423602, 114.148376618668, 
                                             8.90737285506382, 16.7791925268633, 32.0409500313298, 4.91804723063735, 
                                             19.1290374537869, 5.54600968697425, 22.2985869624463, 154.740324753635, 
                                             12.8470204090039, 28.4518018574842, 34.8508421836621, 647.817331974169, 
                                             20.1107239887663, 115.849953826104, 8.01656186978807, 231.397986561214, 
                                             74.0235455862041, 652.332824392302, NA, NA, 4.41505603374484, 
                                             NA, 8.70787589323223, 11.2212181047515, 78.0819291629949, 
                                             6.75542213340634, 90.4249298288882, 69.6663541063077, 7.76768575885308, 
                                             36.5903131229487, 431.033230583165, 17.248411344137, NA, 
                                             27.1527603640721, 12.9134335737364, 14.6398591018054), Var5 = c(2.086, 
                                                                                                             5.23, 4.112, 2.896, 4.8, 5.36, 3.504, 4.398, 3.868, 4.356, 
                                                                                                             3.844, 2.862, 2.16, 3.862, 3.4, 1.56, 1.942, 5.954, 4.51, 
                                                                                                             1.89, 3.202, 3.83, 1.544, 3.68, 3.786, 5.52, 3.376, 3.058, 
                                                                                                             1.182, 3.758, 5.974, 4.14, 2.358, 5.226, 5.044, 4.178, 4.824, 
                                                                                                             3.776, 3.654, 3.72, 2.694, 3.542, 7.15, 2.99, 3.546, 4.582, 
                                                                                                             3.252, 3.396, 3.468, 2.954, 5.374, 3.732, 3.646, 5.1, 6.262, 
                                                                                                             2.566, 4.878, 5.414, 5.646, 5.224, 9.462, 0.618, 0.102, 1.76, 
                                                                                                             1.658, 2.804, 3.488, 5.7, 2.884, 5.012, 2.912, 3.788, 4.17, 
                                                                                                             7.862, 3.906, 1.836, 4.994, 3.882, 2.602), Var6 = c(43.2, 
                                                                                                                                                                 10.8, 7.5, 2.7, 21.5, 7.4, 27.4, 63.1, 1.5, 3.6, 1.1, 20, 
                                                                                                                                                                 1.4, 18.9, 27.7, 1.9, 0.8, 38.3, 32.4, 18.8, 3.2, 5.6, 1.6, 
                                                                                                                                                                 5, 42.2, 8.2, 14.5, 0.7, 1.6, 2.8, 41.4, 32, 5.6, 37.4, 42.8, 
                                                                                                                                                                 20.7, 39.9, 17.2, 21, 37.4, 0.6, 19, 26.6, 0.5, 1.1, 20.5, 
                                                                                                                                                                 18.1, 46.2, 17.1, 2.8, 26.9, 3.4, 22.7, 20.9, 52.6, 3.5, 
                                                                                                                                                                 47.3, 20.1, 56.3, 19.4, 56.6, 1.5, 27.1, 2.7, 7.8, 16.6, 
                                                                                                                                                                 1.4, 48.1, 1.3, 10.7, 22.2, 1.4, 28.2, 32.9, 22.7, 6.4, 24.1, 
                                                                                                                                                                 21, 3.9), Var7 = 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, 1, 0, 
                                                                                                                                                                                    0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
                                                                                                                                                                                    0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 
                                                                                                                                                                                    1, 0, 1, 0, 1, 0, 0, 0, 0), Var8 = c(0, 0, 0, 1, 0, 0, 0, 
                                                                                                                                                                                                                         0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 
                                                                                                                                                                                                                         1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 
                                                                                                                                                                                                                         0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 
                                                                                                                                                                                                                         0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1), Var9 = c(0, 
                                                                                                                                                                                                                                                                                0, 1, 0, 0, 1, 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, 1, 1, 1, 0, 0, 1, 0, 0, 
                                                                                                                                                                                                                                                                                1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 
                                                                                                                                                                                                                                                                                1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 
                                                                                                                                                                                                                                                                                0, 0), Var10 = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 
                                                                                                                                                                                                                                                                                                 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0), Var11 = c(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, 1, 0, 0, 0, 0, 
                                                                                                                                                                                                                                                                                                                                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 
                                                                                                                                                                                                                                                                                                                                    1, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0), Var12 = c(1L, 
                                                                                                                                                                                                                                                                                                                                                                                          1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
                                                                                                                                                                                                                                                                                                                                                                                          1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
                                                                                                                                                                                                                                                                                                                                                                                          1L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 
                                                                                                                                                                                                                                                                                                                                                                                          1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 
                                                                                                                                                                                                                                                                                                                                                                                          0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 
                                                                                                                                                                                                                                                                                                                                                                                          0L, 1L, 1L)), row.names = c(1L, 2L, 3L, 5L, 11L, 12L, 13L, 
                                                                                                                                                                                                                                                                                                                                                                                                                      15L, 18L, 21L, 28L, 29L, 30L, 31L, 32L, 36L, 37L, 39L, 43L, 46L, 
                                                                                                                                                                                                                                                                                                                                                                                                                      48L, 52L, 54L, 56L, 57L, 59L, 62L, 71L, 73L, 74L, 76L, 80L, 81L, 
                                                                                                                                                                                                                                                                                                                                                                                                                      88L, 89L, 90L, 92L, 93L, 94L, 96L, 103L, 104L, 105L, 106L, 107L, 
                                                                                                                                                                                                                                                                                                                                                                                                                      113L, 114L, 119L, 120L, 121L, 123L, 124L, 127L, 130L, 135L, 136L, 
                                                                                                                                                                                                                                                                                                                                                                                                                      138L, 139L, 141L, 143L, 146L, 150L, 153L, 156L, 160L, 162L, 163L, 
                                                                                                                                                                                                                                                                                                                                                                                                                      164L, 167L, 170L, 171L, 173L, 174L, 175L, 179L, 181L, 182L, 184L, 
                                                                                                                                                                                                                                                                                                                                                                                                                      185L), class = "data.frame")


model <- lm(formula = Dep_var ~ Var1 + Var2 + log(Var3) +
                 Var4 + Var5 + Var6 + Var7 + Var8 +
                 Var9 + Var10 + Var11 + Var12, 
                 data = df, 
                 na.action = na.exclude)


coeftest(model, vcov = vcovHC(model, method = "arellano", type = "HC3"))
$\endgroup$
4
  • $\begingroup$ The problem is nicely ameliorated by using the logit of the response instead of the response itself. This indicates that logistic regression ought to work well, too. $\endgroup$
    – whuber
    Sep 4, 2020 at 17:53
  • $\begingroup$ @whuber thanks for your helpful comment, but could you elaborate a bit? Should I just take the logarithm of the dependent variable and then run what model? $\endgroup$ Sep 4, 2020 at 17:56
  • 1
    $\begingroup$ Here are some things to do: fit <- lm(log(Dep_Var/101) - log(1 - Dep_Var/101) ~ Var1 + Var2 + log(Var3) + Var4 + Var5 + Var6 + Var7 + Var8 + Var9 + Var10 + Var11 + Var12, data = df, na.action = na.exclude); df$Residual <- residuals(fit); ; hist(df$Residual); plot(fit) $\endgroup$
    – whuber
    Sep 4, 2020 at 17:59
  • 2
    $\begingroup$ The logit transform I suggested above works well -- but, like the original model, it grossly overfits. You have too few observations to fit a dozen parameters. Repeated application of glmnet (50 times, with cross-validation) shows just six variables consistently look important, suggesting the model log(Dep_Var/101) - log(1 - Dep_Var/101) ~ Var2 + log(Var3) + Var6 + Var8 + Var11 + Var12. That buys you a few more observations, too, because not as few now have a missing value.summary $\endgroup$
    – whuber
    Sep 4, 2020 at 19:08

1 Answer 1

2
$\begingroup$

Hmmm, tricky. Beta regression can be useful for something like this. In beta regression, your outcome can be a fraction of stuff, so it lends itself naturally to these sorts of interval scales. However, the outcome can never actually be 0 or 1 (or in your scale, 0 or 100) which poses a problem for your data.

One approach may be to simply compute d$y - d$Dep_Var/100 - 0.001, but that seems a bit hacky to me. It may be sufficient for what you want to do, but the best way would be to convince of a likelihood supported on [0,1].

$\endgroup$
3
  • $\begingroup$ thanks for the answer. I tired it out it worked. However the results are not very different from the OLS results. Maybe this will make it into the Appendix. Yes it's a statistical hellhole $\endgroup$ Sep 4, 2020 at 18:06
  • $\begingroup$ just one additional question regarding the programming: How should the link argument be specified in this case? It's logit isn't it? $\endgroup$ Sep 4, 2020 at 18:12
  • $\begingroup$ Logit is a fine link $\endgroup$ Sep 4, 2020 at 18:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.