Non-Linear regression and variance misspecification

Given a non-linear regression model for cross-section data

$$y_i = f(x_i,\theta_0) + \epsilon_i,$$

where it is assumed that $$\mathbb E[y_i\lvert x_i] = f(x_i,\theta_0)$$, I understand that it is a standard approach to estimate the conditional variance of the errors $$Var(\epsilon_i \lvert x_i)$$ as a function of the covariates $$\sigma^2(x_i,\lambda)$$ and that the non-linear least squares estimator $$\hat \theta$$ remains consistent even though the variance function may be misspecified. However I am not really sure I understand why the misspecification of the condtional variance do not imply inconsistency of $$\hat \theta$$?

Consistency depends on how you let the $$x_i$$ increase in number.

If you have the following model (which is in fact a linear model):

$$y_i \sim N(\mu = \theta \frac{1}{\sqrt{x_i}}, \sigma^2 = 1/x_i^2)$$

with

$$x_i \sim \text{Uniform}(0,1)$$

then the variance of the estimate $$\hat{\theta}$$ will increase when the number of samples increases.

See the simulation below: # function to make an estimate
samplepar <- function(n) {
a <- 2
x <- runif(n)
y <- a/sqrt(x)+rnorm(n,0,0.01*a/x)
mod <- nls(y ~ a/sqrt(x), start = list(a=2))
out1 <- coefficients(mod)
mod <- nls(y ~ a/sqrt(x), start = list(a=2), weights = x^2)
out2 <- coefficients(mod)
c(out1,out2)
}

# some settings
layout(matrix(1:2,1))
set.seed(1)
n <- 10000

# perform multiple times an estimate for samples of size 5 and size 1000
small <- replicate(n,samplepar(5))
large <- replicate(n,samplepar(1000))

# compute histograms and plotting
d <- 0.01
h1 <- hist(small[1,],
breaks = seq(min(small[1,]-d),
max(small[1,]+d),d),
plot = FALSE)
h2 <- hist(large[1,],
breaks = seq(min(large[1,]-d),
max(large[1,]+d),d),
plot = FALSE)

plot(h1$$mids,h1$$counts/n/d, xlim = c(1.5,2.5),log="y",ylim=c(0.1,100),
xlab = "estimate", ylab = "density",yaxt="n")
axis(2,at=c(0.1*c(2:9),1*c(2:9),10*c(2:9)),labels=rep("",24),las=2)
axis(2,at=c(0.1,1,10),las=2)
points(h2$$mids,h2$$counts/n/d, xlim = c(1.5,2.5),col=2)
legend(1.5,100,c("5 data points","1k data points"),col=c(1,2),pch=1, cex = 0.7)
title("distribution of parameter estimates \n non-weighted least squares", cex.main=1)

d <- 0.001
h1 <- hist(small[2,],
breaks = seq(min(small[2,]-d),
max(small[2,]+d),d),
plot = FALSE)
d2 <- 0.0001
h2 <- hist(large[2,],
breaks = seq(min(large[2,]-d2),
max(large[2,]+d2),d2),
plot = FALSE)

plot(h1$$mids,h1$$counts/n/d, xlim = c(1.95,2.05),log="y",ylim=c(1,1000),
xlab = "estimate", ylab = "density",yaxt="n")
axis(2,at=c(1*c(2:9),10*c(2:9),100*c(2:9)),labels=rep("",24),las=2)
axis(2,at=c(1,10,100,1000),las=2)
points(h2$$mids,h2$$counts/n/d2, xlim = c(1.5,2.5),col=2)
legend(1.95,1000,c("5 data points","1k data points"),col=c(1,2),pch=1, cex = 0.7)
title("distribution of parameter estimates \n weighted least squares", cex.main=1)

• So the estimate is not stable (because the higher number of points will increase the probability to encounter high variance points when $$x_i \approx 0$$).

• But if you would let the sample size increase while keeping the $$x_i$$ fixed (e.g. an increase of the number of samples with the same $$x_i$$ and variance) then the estimate should be consistent.

Intuitive explanation: effectively you could replace the duplicate samples for a single sample but with smaller variance. Minimizing the least squares for repeated samples is the same as minimizing the least squares for the means of those repeated samples.