Pasos de la Simulación

X=1:40  ##Valores iniciales para X DE 1 A 40
Y = 5+(3*X) + rnorm(n = 30,mean = 0,sd = 8 ) ##Valores de Y junto con una desviacion de 8
## Warning in 5 + (3 * X) + rnorm(n = 30, mean = 0, sd = 8): longitud de objeto
## mayor no es múltiplo de la longitud de uno menor
plot(X,Y)

datos=data.frame(X,Y)

head(datos,3)
X Y
1 10.93620
2 15.10571
3 15.22723
beta0_est=6 ##Se define valor de Beta0 = 6
beta1_est=2.5  ##S define valor de Beta1 = 2.5
Y_est=beta0_est + (beta1_est*X)

plot(X,Y)
lines(X,Y_est,col="red")

beta0_est=seq(4,8,0.6) ##rango de valores de beta0 = 6
beta1_est=seq(1,5,0.3)  ##rango de valores de beta1 = 3
betas=expand.grid(beta0_est,beta1_est)
names(betas)=c("beta0_est","beta1_est")
SCE=array(NA,dim(betas)[1])
Sline=array(NA,dim(betas)[1])
plot(X,Y)

for(i in 1:dim(betas)[1]){
Y_est=betas$beta0_est[i] + (betas$beta1_est[i]*X)
lines(X,Y_est,col="red")
SCE[i]=sum(Y_est-Y)^2
}

resultados=data.frame(betas,SCE,Sline)
library(scatterplot3d)
require(plotly)
require(ggplot2)

plot_ly(
  x=resultados$beta0_est,
  y=resultados$beta1_est,
  z=resultados$Sline,
  size = .5)
modelo=lm(Y~X)
summary(modelo)
## 
## Call:
## lm(formula = Y ~ X)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -26.644  -5.082   1.644   3.252  17.311 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    6.618      2.870   2.306   0.0267 *  
## X              2.944      0.122  24.128   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 8.907 on 38 degrees of freedom
## Multiple R-squared:  0.9387, Adjusted R-squared:  0.9371 
## F-statistic: 582.2 on 1 and 38 DF,  p-value: < 2.2e-16

Se realiza la estimación por MCO utilizando la función lm, el método nos indica que el intercepto es 6.8 y el mínimo de la pendiente es 2.9

Indicador de ajuste o R2 es de 0.9

el error aleatorio nos evita que los valores de intercepción y valor mínimo de la pendiente no sean iguales a de Beta0 y Beta1