zoukankan      html  css  js  c++  java
  • 统计学习导论:基于R应用——第三章习题

    第三章习题

    部分证明题未给出答案

    1.

    表3.4中,零假设是指三种形式的广告对TV的销量没什么影响。而电视广告和收音机广告的P值小说明,原假设是错的,也就是电视广告和收音机广告均对TV的销量有影响;报纸的P值高,说明原假设成立,也就是报纸广告对TV的销量没啥影响。

    2.

    KNN回归和KNN近分类都是典型的非参数方法。这两者的区别在于,前者的输入和输出均为定量值;而后者的输入和输入和输出均为定性值。

    3.

    首先,有题目可知下面关系:Y = 50 + 20(gpa) + 0.07(iq) + 35(gender) + 0.01(gpa * iq) - 10 (gpa * gender)

    (a) 当IQ和GPA一定的时候,Y的可变量是35*gender-10(gpa*gender).所以当GPA小的时候,无法判断前面变量的正负号,而当GPA足够大的时候,该变量一定是负的。所以当GPA足够大时,男性平均收入高于女性

    (b) 直接套公式Y= 50 + 20 * 4 + 0.07 * 110 + 35 + 0.01 (4 * 110) - 10 * 4= 137.1

    (c)错误。中文版61页有比较好的解释,实验分层原则规定:如果模型中含有交互项,那么即使主效应的系数的p值不显著,也应该包含在模型中。

    4.

    (a)一般来说,三次回归的训练RSS会比线性回归的训练RSS小,因为三次回归会对数据进行贴近训练集的拟合。

    (b)题目中明确说明该数据的实际模型是线性拟合,所以用三次拟合会产生过拟合,而线性拟合有更好的泛化能力,所以线性回归的测试RSS小。

    (c)答案和(a)一样

    (d)由于不知道实际情况,所以无法判断。

    8.

    Auto = read.table("Auto.data.txt", header = T ,na.strings="?")
    Auto = na.omit(Auto)

    (a)

    attach(Auto)
    lm.fit = lm(mpg ~ horsepower)
    summary(lm.fit)

    i.由summary的结果来看,F-statistic很大而p-value很小,说明两者是有相关性的。

    ii.由书的54页可知,看拟合效果如何,得看RSE和R-square。书上55页讲的挺清楚,不过目前不知道RSE在这里怎么解释拟合效果。。囧。。R-square为0.6059,这说明Y的变异中能被X解释的部分所占比例有60.59%

    iii.由拟合出的参数可知,负相关。

    iv.predict(lm.fit, data.frame(horsepower=c(98)), interval="confidence")。结果是24.47,置信区间是(23.97, 24.96)

     predict(lm.fit, data.frame(horsepower=c(98)), interval="prediction")。预测区间是(14.81, 34.12)

    (b)

    plot(horsepower, mpg)
    abline(lm.fit)

    (c)

    par(mfrow=c(2,2))
    plot(lm.fit)

    9.

    (a)

    Auto = read.table("Auto.data.txt", header = T ,na.strings="?")
    Auto = na.omit(Auto)
    pairs(Auto)

    (b)

    cor(subset(Auto, select=-name))

    (c)

    lm.fit1 = lm(mpg~.-name, data=Auto)
    summary(lm.fit1)

    i.有。有f-statistic和p-value值可以判断

    ii.由p-value小于0.05可知,displacement, weight, year, and origin这几个预测变量和响应变量有显著关系。

    iii.车龄变量的系数是0.75,这说明随着车龄的增加,车子会越来越耗油。

    (d)

    par(mfrow=c(2,2))
    plot(lm.fit1)
    
    plot(predict(lm.fit1), rstudent(lm.fit1))

    (e)

    lm.fit2 = lm(mpg~cylinders*displacement+displacement*weight)
    summary(lm.fit2)

    (f)

    lm.fit3 = lm(mpg~log(weight)+sqrt(horsepower)+acceleration+I(acceleration^2))
    summary(lm.fit3)
    
    par(mfrow=c(2,2))
    plot(lm.fit3)
    
    plot(predict(lm.fit3), rstudent(lm.fit3))
    
    lm.fit2<-lm(log(mpg)~cylinders+displacement+horsepower+weight+acceleration+year+origin,data=Auto)
    summary(lm.fit2)
    
    par(mfrow=c(2,2)) 
    plot(lm.fit2)
    
    plot(predict(lm.fit2),rstudent(lm.fit2))

    10.

    (a)

    library(ISLR)
    summary(Carseats)
    
    attach(Carseats)
    lm.fit = lm(Sales~Price+Urban+US)
    summary(lm.fit)

    (b)

    由summary(lm.fit)的结果的p-value和t-statistic可知,Price和US与Sales有关,Urban和Sales无关

    (c)

    Sales = 13.04 + -0.05*Price - 0.02*Urban + 1.20*US,其中Urban和US为YES时,值为1,否则为0

    (d)

    Price and US

    (e)

    由上面分析可知,Urban与Sales无关,所以我们可以去掉这个变量

    lm.fit2 = lm(Sales~Price+US)
    summary(lm.fit2)

    (f)

    (a)中Multiple R-squared:  0.239,  Adjusted R-squared:  0.234,(e)中Multiple R-squared:  0.239,  Adjusted R-squared:  0.235 ,可知两者拟合度差不多,而(e)稍微好点

    (g)

    confint(lm.fit2)

    (h)

    plot(predict(lm.fit2), rstudent(lm.fit2))

    通过这个命令得到的图,我们可知,stuendtize residuals的范围在-3到3之间,所以没有离群点

    par(mfrow=c(2,2))
    plot(lm.fit2)

    通过这个命令得到的图,我们可知,有一些点远远超过了其他点,故存在高杆点

    11.

    按照题目要求先生成x和y

    set.seed(1)
    x = rnorm(100)
    y = 2*x + rnorm(100)

    (a)

    lm.fit = lm(y~x+0)
    summary(lm.fit)

    由结果可知,p-value接近0可知,原假设不成立

    (b)

    lm.fit = lm(x~y+0)
    summary(lm.fit)

    由结果可知,p-value接近0可知,原假设不成立

    (c)

    这个问题问得让我都觉得奇怪。。。答案是说明x和y确实是有关系么

    (d)

    由(a)中结果可知,t-value为18.73.而(sqrt(length(x)-1) * sum(x*y)) / (sqrt(sum(x*x) * sum(y*y) - (sum(x*y))^2))计算结果为18.72593

    (e)

    我们把t(x,y)换成t(y,x),会得到t(x,y)=t(y,x)

    (f)

    对比(a)和(b)结果就行

    12.

    (a)

    由公式可知,当相等时,满足题意

    (b)

    set.seed(1)
    x = rnorm(100)
    y = 2*x
    lm.fit = lm(y~x+0)
    lm.fit2 = lm(x~y+0)
    summary(lm.fit)
    summary(lm.fit2)

    (c)

    set.seed(1)
    x <- rnorm(100)
    y <- -sample(x, 100)
    lm.fit <- lm(y~x+0)
    lm.fit2 <- lm(x~y+0)
    summary(lm.fit)
    summary(lm.fit2)

    13.

    这个题目比较简单。。就是写代码

    (a)~(g)

    set.seed(1)
    x = rnorm(100)
    
    eps = rnorm(100, 0, sqrt(0.25))
    
    y = -1 + 0.5*x + eps
    
    plot(x, y)
    
    lm.fit = lm(y~x)
    summary(lm.fit)
    
    plot(x, y)
    abline(lm.fit, lwd=3, col=2)
    abline(-1, 0.5, lwd=3, col=3)
    legend(-1, legend = c("model fit", "pop. regression"), col=2:3, lwd=3)
    
    lm.fit_sq = lm(y~x+I(x^2))
    summary(lm.fit_sq)
    

    (h)~(i)

    这个把eps里的方差值改小一点就行了或者改大一点

    set.seed(1)
    eps1 = rnorm(100, 0, 0.125)
    x1 = rnorm(100)
    y1 = -1 + 0.5*x1 + eps1
    plot(x1, y1)
    lm.fit1 = lm(y1~x1)
    summary(lm.fit1)
    
    abline(lm.fit1, lwd=3, col=2)
    abline(-1, 0.5, lwd=3, col=3)
    legend(-1, legend = c("model fit", "pop. regression"), col=2:3, lwd=3)
    
    set.seed(1)
    eps2 = rnorm(100, 0, 0.5)
    x2 = rnorm(100)
    y2 = -1 + 0.5*x2 + eps2
    plot(x2, y2)
    lm.fit2 = lm(y2~x2)
    summary(lm.fit2)
    
    abline(lm.fit2, lwd=3, col=2)
    abline(-1, 0.5, lwd=3, col=3)
    legend(-1, legend = c("model fit", "pop. regression"), col=2:3, lwd=3)
    

    (j)

    confint(lm.fit)
    confint(lm.fit1)
    confint(lm.fit2)
    

    14.

    (a)

    比较简单。,其中,

    (b)~(e)

    cor(x1, x2)
    plot(x1, x2)
    
    lm.fit = lm(y~x1+x2)
    summary(lm.fit)
    
    lm.fit = lm(y~x1)
    summary(lm.fit)
    
    lm.fit = lm(y~x2)
    summary(lm.fit)
    

    (f)

    不矛盾,因为x1和x2有相关性

    (g)

    计算离群点和高杆点在10题中做过了

    15.

    (a)

    一个一个的做线性回归。。。累感不爱

    (b)

    lm.all = lm(crim~., data=Boston)
    summary(lm.all)
    

    (c)

    x = c(coefficients(lm.zn)[2],
          coefficients(lm.indus)[2],
          coefficients(lm.chas)[2],
          coefficients(lm.nox)[2],
          coefficients(lm.rm)[2],
          coefficients(lm.age)[2],
          coefficients(lm.dis)[2],
          coefficients(lm.rad)[2],
          coefficients(lm.tax)[2],
          coefficients(lm.ptratio)[2],
          coefficients(lm.black)[2],
          coefficients(lm.lstat)[2],
          coefficients(lm.medv)[2])
    y = coefficients(lm.all)[2:14]
    plot(x, y)
    

    (d)

    类似下面代码一个一个的做回归。。。

    lm.zn = lm(crim~poly(zn,3))
    summary(lm.zn)
    

      

  • 相关阅读:
    Yum安装MySQL
    Java最小化镜像制作
    Docker CE安装
    每月最后一周的周六晚上21:00执行任务-crontab
    每10秒执行定时任务-crontab
    可复制领导力-回顾收录
    逻辑数据库设计
    5e赋能核心文化
    python 学习自学
    德鲁克的“五项主要习惯”
  • 原文地址:https://www.cnblogs.com/-Sai-/p/5260029.html
Copyright © 2011-2022 走看看