\documentclass[margin=0.5cm]{standalone} \usepackage{tikz} \usepackage{luacode} \begin{document} \begin{tikzpicture} % Draw axes \draw[->] (0,0) -- (5,0); \draw[->] (0,0) -- (0,5); \directlua{ function runif(min, max) return min + (max - min) * math.random() end math.randomseed(42) x_min = 0 x_max = 5 error_min = -1 error_max = 1 beta0 = 2 beta1 = 1/5 x_values = {} y_values = {} for i=1,42 do x = runif(x_min, x_max) epsilon = runif(error_min, error_max) y_hat = beta0 + beta1 * x y = y_hat + epsilon tex.print("\\draw[-,very thin, lightgray] ("..x..","..y_hat..") -- ("..x..","..y..") ;") x_values[i] = x y_values[i] = y end for i=1,42 do x = x_values[i] y = y_values[i] tex.print("\\node[black] at ("..x..","..y..") {.};") end } % Draw least square line \draw[-,blue,thick] (0,2) -- (5,\directlua{tex.print(5*beta1+beta0)}); % Draw square norm \end{tikzpicture} \end{document}