R语言线性回归模型拟合诊断异常值分析家庭燃气消耗量和卡路里实例带自测题

简介: R语言线性回归模型拟合诊断异常值分析家庭燃气消耗量和卡路里实例带自测题

原文链接:http://tecdat.cn/?p=27474 


考虑我们从实验、事件等中观察到一些数据 y 的情况。我们将观察结果 y 解释为某个随机变量 Y 的实现:

统计模型是对未知参数 θ 的 Y 分布的规范。通常,观测值 y = (y1, . . . , yn) ∈ Rn 是一个向量,而 Y = (Y1, . . . ., Yn) 是一个随机向量。在这种情况下,统计模型是 Y1 联合分布的规范, . . , Yn 直到未知参数 θ。


手机示例


观察示例:yi = 学生 i 在讲座的前 10 分钟内查看他们的手机。

模型:

在许多实验和情况下,观测值 Y1, . . . , Yn 不具有相同的分布。Y1 的分布, 。. . , Yn 可能取决于非随机量 x1, 。. . , xn 称为协变量。


示例:矮小的学生在数学考试中取得更高的分数吗?


Yi = 平均分,xi = 身高

模型:

模型拟合

我们将描述模型拟合的过程如下:

1. 模型规范——指定观测值 Y1, 的分布。. . , Yn 可达未知参数。

2. 模型未知参数的估计。

3. 推理——这涉及构建置信区间和测试关于参数的假设。

4. 诊断——检查模型与数据的拟合程度。

“理想”模型应该

• 与观察到的数据相当吻合。

• 不包含不必要的参数。

• 易于解释。


R中的示例


假设我们有由家庭燃气消耗量和平均外部温度组成的数据(见下表)。外部温度可以用来衡量家庭使用的燃气量吗?

我们将 Gas 作为因变量,Yi 和 Temp 作为协变量 xi。假设我们使用线性正态模型来解释数据;其中 Yi 是独立的 N(µi, σ2),其中 µi = β1 + β2xi 对于 i = 1, . . . , 26. 对于这个模型,我们有

然后计算 MLE使用以下命令。首先,我们合并观察向量 Y 和设计矩阵 X:

> X <- cbind(1,dat$Temp)

可以使用以下命令找到:

> qr(t(X)%*%X)$rank\[1\] 2

作为有满秩,我们可以计算它的逆:

> solve(t(X)%*%X)

MLE β =可以计算如下:

> betahat

然后绘制模型拟合我们可以使用

> lines(x=xs,y=btaht\[1\]+xs*beaht\[2\])

点击标题查阅往期内容


R语言用线性模型进行臭氧预测:加权泊松回归,普通最小二乘,加权负二项式模型,多重插补缺失值


01

02

03

04


此外,残差平方和 (RSS) 为

> RSS <- t(ehat)%*%ehat

> RSS

最后,我们可以计算:

> sg2ht <- RSS/(26-2)> sg2at

诊断


系数


衡量线性模型拟合优度的一种方法是检查决定系数;我们现在解释。在只有截距项的最简单模型中

我们有 RSS = ∑in=1(Yi - Y)2。具有更多参数和大型设计矩阵的较大模型将具有较小的 RSS。

对于包含截距项的模型,线性模型质量的度量是

这称为决定系数或 R2 统计量。请注意,0 ≤ R2 ≤ 1 和 R2 = 1 对应于“完美”模型。


异常值


异常值是不符合其余数据的一般模式的观察结果。异常值可能由于数据记录错误、数据是两个或多个总体的混合以及模型需要改进等原因而发生。我们将假设一个满秩的设计矩阵。


残差图


杠杆


我们可能对每个观察结果对模型拟合的影响程度感兴趣。例如,考虑残差 e 其中

杠杆对应于观察残差的方差。


库克距离


衡量观察影响的另一种方法是考虑它对估计量 β 的变化或影响。一种这样的衡量标准是库克的距离

是不使用第 i 个观测值计算的估计量。经验法则是查看 Ci 接近 1 的观测值。


库克距离的解释


我们现在更详细地研究残差、杠杆和库克距离。考虑下面给出的 4 个人工数据集,每个数据集都安装了正常的线性模型。此外,还显示了残差与杠杆的关系图。

红色数据点是可疑数据点,即高杠杆、高残差(绝对值)或两者兼有。红线是包括红色数据点的拟合,蓝线是不包括红色数据点的拟合。


例子


表中的数据显示了 20 名接受高碳水化合物饮食的男性糖尿病患者从复合碳水化合物中获得的总卡路里百分比,以及他们的年龄、体重和卡路里作为蛋白质的百分比。


我们将碳水化合物值作为我们的反应 Yi,以年龄、体重和蛋白质作为协变量。然后我们用 Yi ∼ N(µi, σ2) 拟合正态线性模型,其中

然后,要找到 β 的最大似然估计量,我们需要求解:

> beta.hat <- solve(t(X)%*%X)%*%t(X)%*%y

> t(beta.hat)

可以计算方差的无偏估计量 RSS/(n - p),并用于计算每个分量的标准差.

> sqrt(diag(sig.sq.hat\*solve(t(X)%\*%X)))

残差是

> summary(ehat)

R2 和它的调整版本 R2 系数是

> R2

> 1-(RS/(20-4))/(RS0/(20-1))

我们可以使用 R 中的 lm 函数检查这些结果,如下所示:

> summary(mylm1)

接下来,我们执行单向方差分析测试

> anova(mylm1)

注意输出的形式——即 Sum Sq 是基于上述模型的差异,即

> sum(mym2$esiuls^2)-sum(mym3$reials^2)

最后,R 还可以为我们生成一些残差图,如下所示:

> plot(mylm2)


自测题


Q1) (a) In R fit the normal linear model with:

Based upon the summary of the model, do you think that the model fits the data well? Explain your reasoning using the values reported in the R summary

(b) Perform a hypothesis test to ascertain whether or not to include the intercept term | use a 5% significance level. Include your code.

(c) Conduct a hypothesis test comparing the models:

E(Y ) = β1 against E(Y ) = β1 + β2x2 + β3x3 + β4x4

as a 5% level. Include your code

(d) By inspecting the leverages and residuals, identify any potential outliers. Name these data points by their index number. Give your reasoning as to why you believe these are potential outliers. You may present up to three plots if necessary.

Q2) We shall now consider a GLM with a Gamma response distribution.

(a) Show that a random variable Y where Y follows a Gamma distribution with probability density function:

is a member of the exponential family | taking the form a(φ) = φ. State the canonical link function and the variance function in terms of the expected response and the dispersion parameter.

(b) Show that the deviance for a GLM with a Gamma response distribution is

(c) Rewrite (by \hand") the IWLS algorithm  specifically for the Gamma response and using the link:

This is called the inverse link function.

(d) Write the components of the total score U1; : : : ; Up and the Fisher information matrix for this model.

(e) Given the observations y, what is a sensible initial guess to begin the IWLS algorithm in general?

(f) Manually write an IWLS algorithm to fit a Gamma GLM using your data, mydat, using the inverse link and same linear predictor in Q1a). Use the deviance as the convergence criteria and initial guess of β as (0:5; 0:5; 0:5; 0:5). Present your code and along with your final estimate of β and final deviance.

(g) Based on your IWLS results, compute φbD and φbp and the estimates of var(βb2). In R fit the model again with a Gamma response i.e.

> glm(y~x1+x2+x3,family=Gamma,data=mydat)

Note the capital G in Gamma. Verify the results with your IWLS results.

(h) Give a prediction for the response given by the model for x1= 13, x2= 5 x3= 0:255

and give a 91% confidence interval for this prediction. Include your code.

(i) Perform a hypothesis test between this model and another model with the same link and response distribution but with linear predictor η where ηi = β1 + β2xi1 + β3xi2 for i = 1; : : : ; n:

Use a 5% significance level. You may use the deviance function here. Include your code.

(j) Using your IWLS results, manually compute the leverages of the observations for this model | present your code (but not the values) and plot the leverages against the observation index number.

(k) Proceed to investigate diagnostic plots for your Gamma GLM. Identify any potential outliers | give your reasoning. Remove the most suspicious data point

| you must remove 1 and only 1 | and refit the same model. Compare and comment on the change of the model with and without this data point | you may wish to refer to the relative change in the estimated coefficients. You may present up to three plots if necessary.

相关文章
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
22天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
40 3
|
2月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
6月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
6月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
3月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
3月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
3月前
|
机器学习/深度学习 数据采集
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分类分析预测房价及交叉验证
上述介绍仅为简要概述,每个模型在实施时都需要仔细调整与优化。为了实现高度精确的预测,模型选择与调参是至关重要的步骤,并且交叉验证是提升模型稳健性的有效途径。在真实世界的房价预测问题中,可能还需要结合地域经济、市场趋势等宏观因素进行综合分析。
69 3
|
6月前
|
数据采集 数据可视化
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)