standard error estimate in CRCH [Disclosure: I previously posted this over at stackoverflow, but I think that was the wrong place as I got no response. I've since deleted that post.]
I need to run a regression on censored data, and then I'll need to simulate some new data based on those results. But before I do that with my real data, I want to be sure that I understand the results of tobit/censored regression models in general. To that end, I thought I would run a tobit regression on data without any censored observations and compare the results to standard linear regression:
library(crch)
library(VGAM)

set.seed(1234)
x <- runif(20, 0, 10)
y <- rnorm(20, x, 2)

m_lm <- lm(y ~ x) # plain jane linear regression
m_glm <- glm(y ~ x) # Gaussian GLM with identity link
m_crch <- crch(y ~ x, link.scale = "identity") # tobit regression #1
m_vglm <- vglm(y ~ x, family = tobit(Lower = -Inf, Upper = Inf, lsd = "identitylink")) # tobit #2

# the regression coefficients of all four models are the same:
coef(m_lm)
coef(m_glm)
coef(m_crch)[1:2]
coef(m_vglm)[-2]

As expected, all four models give identical regression coefficients. What I didn't expect is that the residual standard error using the tobit functions is somewhat different from the values from lm and glm:
summary(m_lm)$sigma # 1.765871
sqrt(summary(m_glm)$dispersion) # 1.765871
coef(m_crch)[3] # 1.675252 
coef(m_vglm)[2] # 1.675252

Why is this? The difference isn't huge (and if the sample size in the simulation is increased this discrepancy gets smaller and smaller), but I find it odd that tobit-based estimates are smaller than the lm/glm estimates. Can someone explain why this is? How can get crch() to give residual standard errors that match lm()?
 A: Without censoring the tobit model just reduces to a standard linear regression model (as correctly pointed out). The standard tobit model uses a Gaussian assumption where the maximum likelihood (ML) estimator for the regression coefficients coincides with the ordinary least-squares (OLS) estimator. However, in OLS you typically use the unbiased estimator for the variance which divides the residual sum of squares by the residual degrees of freedom $n - k$. In contrast, the ML estimator for the variance divides the residual degrees of freedom by $n$ rather than $n - k$. Clearly, both estimators are consistent but the ML estimator is biased.
In your example $n = 20$ and $k = 2$ so that you can re-scale the ML estimate from crch() to match the OLS estimate from lm():
coef(m_crch)[3] * sqrt(20/18)
## (scale)_(Intercept) 
##            1.765871 

In the case with censoring there is no simple unbiased estimator to the best of my knowledge. Thus, the trick with re-scaling just works in the absence of censoring. Usually, practitioners just employ the ML estimate in the censored case.
For reducing bias, one can in principle use the general bias correction strategy proposed by Kosmidis & Firth (2009, Biometrika) and Kosmidis (2014, Wiley Interdisciplinary Reviews: Computational Statistics). We currently work on including that in crch() but this is not quite ready yet.
