多元数据直观表示+线性回归分析

Author

张浩宜221527104

1 多元数据直观表示

1.1 各省消费项目均值条形图

省份过多,各省的名称均不能全部显示

barplot(apply(data,1,mean))#按行做均值条形图

将横轴左边旋转90度,各省的名称均可显示

barplot(apply(data,1,mean),las=3)#按行做均值条形图

利用ggplot2包作图较为美观

1.2 各消费项目均值条形图

按消费项目做均值图条形图

barplot(apply(data,2,mean))#按列做均值图条形图

对不同项目的条形添加不同颜色

 barplot(apply(data,2,mean),col=1:8) #按列做彩色均值图条形图

去掉食品列后的数据按列做均值条形图

barplot(apply(data[,2:8],2,mean))

按消费项目做中位数条形图

barplot(apply(data,2,median))

利用ggplot作均值条形图

使各条形的颜色相同

1.3 各消费项目箱线图

boxplot函数直接作箱线图,默认每个变量(列)作一个箱线,并将全部变量的箱线在同一个图中展示。

boxplot(data)#按列做箱线图

boxplot(data,horizontal=T,las=1)#箱线图中图形按水平放置

利用ggplot函数作箱线图,需要对数据转化为长结果数据

1.4 各消费项目星相图

没有图例的星相图

stars(data)

#有图例的星相图

stars(data,key.loc=c(17,7))  

#具有图例的180度星相图

stars(data,full=F,key.loc=c(17,7))

#具有图例的360度彩色圆形星相图

stars(data,full=F,key.loc=c(17,7))

#具有图例的180度彩色圆形星相图
stars(data,full=F,draw.segments=T,key.loc=c(17,7))

1.5 各消费项目脸谱图

#普通脸谱图

faces(data)

#选择第1,9,19,28,29,30个观测的多元数据做脸谱图

aplpack::faces(data[c(1,9,19,28,29,30),])

effect of variables:
 modified item       Var   
 "height of face   " "食品"
 "width of face    " "衣着"
 "structure of face" "设备"
 "height of mouth  " "医疗"
 "width of mouth   " "交通"
 "smiling          " "教育"
 "height of eyes   " "居住"
 "width of eyes    " "杂项"
 "height of hair   " "食品"
 "width of hair   "  "衣着"
 "style of hair   "  "设备"
 "height of nose  "  "医疗"
 "width of nose   "  "交通"
 "width of ear    "  "教育"
 "height of ear   "  "居住"

1.6 各消费项目雷达图

#去掉第一个变量按每行7个做脸谱图

aplpack::faces(data[,2:8],,ncol.plot=7)

effect of variables:
 modified item       Var   
 "height of face   " "衣着"
 "width of face    " "设备"
 "structure of face" "医疗"
 "height of mouth  " "交通"
 "width of mouth   " "教育"
 "smiling          " "居住"
 "height of eyes   " "杂项"
 "width of eyes    " "衣着"
 "height of hair   " "设备"
 "width of hair   "  "医疗"
 "style of hair   "  "交通"
 "height of nose  "  "教育"
 "width of nose   "  "居住"
 "width of ear    "  "杂项"
 "height of ear   "  "衣着"

ggplot2的扩展包ggiraphExtra能作雷达图

data[c(1,9,19,28,29,30),] %>% 
  mutate(省份=rownames(.)) %>% 
  ggRadar(aes(group = 省份)) 

1.7 各消费项目调和曲线图

#加一个自定义的函数

source("msaR.R")

#绘制调和曲线图,绘制在同一平面

msa.andrews(data)

2 线性回归分析

library(openintro)  # for data
Loading required package: airports
Loading required package: cherryblossom
Loading required package: usdata

Attaching package: 'openintro'
The following object is masked from 'package:TeachingDemos':

    outliers
library(tidyverse)  # for data wrangling and visualization
library(knitr)      # for tables
library(broom)      # for model summary
library(glue)       # for regression equation

get_sign <- function(x) {
  if (x > 0) {
    return("+")
  } else {
    return("-")
  }
}
get_sign <- Vectorize(get_sign)

lm_eq <- function(model){
  y = as.character(formula(model))[[2]]
  x = {as.character(formula(model))[[3]] %>% strsplit(" \\+ ")}[[1]]
  tidy_model <- model %>% tidy() 
  beta_i=round(tidy_model$estimate,2)[-1]
  beta_0=round(tidy_model$estimate,2)[1]
  main <- round(beta_i,2) %>% abs() %>%  paste0(get_sign(beta_i),.,"\\times ",x,collapse ="")
  paste0("$$ \\widehat{{",y,"}} =",beta_0,main,'$$') %>% glue()
}

2.1 一元线性回归2-1

  1. 每周加班工作时间(x)与签发新保单数目(y)呈明显正相关

    plot(data$x,data$y,xlab="每周加班工作时间",ylab="签发新保单数目")

  2. 每周加班工作时间(x)与签发新保单数目(y)的相关系数为0.95 。

  3. 利用每周加班工作时间(x)对签发新保单数目(y)作回归,回归方程为

    \[ \widehat{y} =46.15+251.17\times x\]

  4. 随机误差\(\epsilon\)的标准差\(\sigma\)的估计值为127.06

2.2 多元线性回归2-2

  1. 利用广告预算(x1)和销售代理数目(x2)对年销售额(y)作回归,回归方程为:

    term estimate std.error statistic p.value
    (Intercept) -22.74 30.69 -0.74 0.49
    x1 0.15 0.11 1.33 0.24
    x2 1.22 1.31 0.93 0.40

    \[ \widehat{y} =-22.74+0.15\times x1+1.22\times x2\]

  2. 5%显著水平下,广告预算(x1)和销售代理数目(x2)的系数均不显著。

  3. 广告预算(x1)与销售额(y)相关系数为0.5797;销售代理数目(x2)与销售额(y)相关系数为0.4816 ;广告预算(x1)和销售代理数目(x2)与年销售额(y)的复相关系数为0.6586 。

2.3 多元线性回归2-3

  1. 从回归方程中可知

    term estimate std.error statistic p.value
    (Intercept) -5213.1 12704.5 -0.41 0.70
    GPA 8508.8 2721.6 3.13 0.03
    年龄 181.6 283.5 0.64 0.55

    \[ \widehat{起始工资} =-5213.12+8508.79\times GPA+181.58\times 年龄\]

  2. 含义

  3. 当GPA=3,年龄=24,起始工资的预测值为2.4671^{4} 。

2.4 线性模型选择2-4

  1. 货运总量(y)、工业总产值(x1)、农业总产值(x2)、居民非商品支出(x3)的相关系数矩阵为:

           y    x1    x2    x3
    y  1.000 0.556 0.731 0.724
    x1 0.556 1.000 0.113 0.398
    x2 0.731 0.113 1.000 0.547
    x3 0.724 0.398 0.547 1.000

    散点图矩阵为:

  2. 回归方程为:

    \[ \widehat{y} =-348.28+3.75\times x1+7.1\times x2+12.45\times x3\]

  3. 回归模型的R方为:0.8055 ,说明

  4. 回归模型F检验说明 ,t检验说明

    
    Call:
    lm(formula = y ~ ., data = data)
    
    Residuals:
       Min     1Q Median     3Q    Max 
    -25.20 -17.03   2.63  11.68  33.23 
    
    Coefficients:
                Estimate Std. Error t value Pr(>|t|)  
    (Intercept)  -348.28     176.46   -1.97    0.096 .
    x1              3.75       1.93    1.94    0.100  
    x2              7.10       2.88    2.47    0.049 *
    x3             12.45      10.57    1.18    0.284  
    ---
    Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
    
    Residual standard error: 23.4 on 6 degrees of freedom
    Multiple R-squared:  0.806, Adjusted R-squared:  0.708 
    F-statistic: 8.28 on 3 and 6 DF,  p-value: 0.0149
  5. 剔除不显著的 后,回归模型为

    fm=lm(formula = y~.,data=data)                     
    fm.step=step(fm,direction="backward")
    Start:  AIC=65.98
    y ~ x1 + x2 + x3
    
           Df Sum of Sq  RSS  AIC
    <none>              3297 66.0
    - x3    1       762 4059 66.1
    - x1    1      2072 5369 68.9
    - x2    1      3340 6637 71.0
    #| echo: false
  6. 逐步回归的选择的模型为

    Start:  AIC=65.98
    y ~ x1 + x2 + x3
    
           Df Sum of Sq  RSS  AIC
    <none>              3297 66.0
    - x3    1       762 4059 66.1
    - x1    1      2072 5369 68.9
    - x2    1      3340 6637 71.0
    
    Call:
    lm(formula = y ~ x1 + x2 + x3, data = data)
    
    Coefficients:
    (Intercept)           x1           x2           x3  
        -348.28         3.75         7.10        12.45