x = c(3.5,1,4,2,1,3,4.5,1.5,3,5)
y = c(825,215,1070,550,480,920,1350,325,670,1215)
z = data.frame(x,y)
lm4.1 <- lm(y ~ x);lm4.1
## 
## Call:
## lm(formula = y ~ x)
## 
## Coefficients:
## (Intercept)            x  
##       46.15       251.17
x_hat <- 46.15 + 251.17*x
sigma2 <- t(x_hat - y)%*%(x_hat - y)/(10-1-1);sigma2
##          [,1]
## [1,] 16143.37
(summary(lm4.1) $ sigma)^2
## [1] 16143.37
SSR <- t(x_hat - mean(y))%*%(x_hat - mean(y))
SST <- t(y - mean(y))%*%(y - mean(y))
R2 <- SSR / SST;R2
##           [,1]
## [1,] 0.9004631
(summary(lm4.1) $ r.squared)
## [1] 0.9004924
anova(lm4.1)
## Analysis of Variance Table
## 
## Response: y
##           Df  Sum Sq Mean Sq F value    Pr(>F)    
## x          1 1168713 1168713  72.396 2.795e-05 ***
## Residuals  8  129147   16143                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
res <- residuals(lm4.1);res
##           1           2           3           4           5           6 
## -100.263158  -82.327935   19.149798    1.497976  182.672065  120.323887 
##           7           8           9          10 
##  173.562753  -97.914980 -129.676113  -87.024291
plot(x,res,main='残差散点图',xlab='新保单数目',ylab='残差')

plot(lm4.1)

lm4.1_1 <- lm(y ~ x,data = z)
pre <- predict(lm4.1_1,newdata = data.frame(y = 1000))
## Warning: 'newdata'必需有1行 但变量里有10行
lxy <- function(x1,y1){n = length(x1)
                     sum(x1*y1) -sum(x1)*sum(y1)/n}
a = lxy(x,y)/lxy(x,x)
mean(x)
## [1] 2.85
mean(y)
## [1] 762
b=mean(y)/(mean(x)+1)
y0 = 1000
x0 = (y0-b)/a;x0
## [1] 3.193315