R语言红酒模型实战

R语言数据分析报告

使用软件:R studio
一、对数据的基本分析
在这一次的数据分析报告我选取的是对红酒质量的一个数据分析。我从kaggle上下载了一个1599x12的数据集,其中对于红酒质量影响因素一共有11个因素,分别是:fixed.acidity volatile.acidity Citric.acid Residual.sugar chlorides free.sulfur.dioxide total.sulfur.dioxide density pH sulphates alcohol。接下来开始对该数据集进行分析。
我准备使用多元线性回归模型来对这个数据集建模,得到有关质量的一个回归模型。
首先先装载所需要用到的逻辑包:
其中选用MASS包的原因是为了后面对模型最优化的检验,而car包是为了拟合与评价回归模型,carData包则是安装car包前需要装载的一个包。
其中选用MASS包的原因是为了后面对模型最优化的检验,而car包是为了拟合与评价回归模型,carData包则是安装car包前需要装载的一个包。
由于从kaggle下载下来的数据集是csv文件,所以先将该文件读入r studio。
在这里插入图片描述
setwd是设置一个工作路径,方便读取,读取后的数据集如下图所示:

对数据进行一个基本的排序,使用order函数,使数据集按照质量的顺序进行升序的排序:


随后使用summary函数。对各列做一个基本的数据分析,了解各列的基本信息:
在这里插入图片描述
在这里插入图片描述
从该图中可以得到各列的最小最大值,平均值、残差第一四分位数、残差第三四分位数以及中位数。可以看出,红酒质量的平均值是5.636,比5略高一点,并且没有达到质量为9的红酒。其中3Q和1Q的差被称为四分位距,可以由这个来得出各列的变量分散情况。使用箱线图,来得出各列变量的离散情况:
在这里插入图片描述
从该图可以看出,各列都有着不少的异常点,所以在后面进行回归模型的拟合时,需要对异常点进行一个筛选与清除。
二、模型的建立与分析
2.1 接下来开始建立回归模型,在这里选用了多元线性回归模型来对数据集进行分析,而选用多元线性回归的原因是因为其用两个或多个量化的解释变量预测一个量化的响应变量,根据前面对红酒数据集的一个观察,发现符合该要求。并且因为红酒质量不属于类别型或计数型的因变量,而是一个连续型变量,并且所有自变量都是连续型变量,所以选择使用多元线性回归模型。但仍然无法确定这里使用多元线性回归模型是否是合适的,所以在2.2当中我们将要对其是否符合多元线性回归模型进行验证。
在这里插入图片描述
在这里插入图片描述
2.2 这是建立后回归模型中各个变量的回归系数,从中可以看出,有六个因素与质量呈负相关,五个因素与质量呈正相关,可以发现,volatile、citric、density、sulphates、alcohol对质量的影响较大,接下来绘制成分残差图,观察各自变量与因变量是否呈非线性关系。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从该图可以看出,成分残差图证明了我开始对其的线性假设,所以多元线性回归模型的假设对于这一个数据集看起来是合适的。
2.3 经过前面对于统计假设的验证后,我们需要对各种变量进行一个筛选。在前面的分析中,可以看到许多因素的箱线图上有着许多的异常点,接下来需要对这些点进行一个筛选:
在这里插入图片描述
在这里插入图片描述
所以需要删除这些值,得到一个新的回归模型。
2.4 使用coef函数得出哪个变量最为重要,这里在进行回归分析前,使用scale()函数将数据标准化为均值为0、标准差为1的数 据集,这样用R回归即可获得标准化的回归系数
在这里插入图片描述
在这里插入图片描述
可以看出alcohol因素相对于其他变量是最重要的。
2.5 现在我们初步的可以看出这个模型符合我们对其的线性假设,接卸了使用confint函数得出置信区间。
在这里插入图片描述
在这里插入图片描述
其中fixed、residual的置信区间中包含0,所以可以得出结论:当其他变量不变时,fixed和residual的改变与红酒质量无关。不过,对这些结果的信念,都只建立在我的数据满足统计假设的前提之上。所以在接下来,我们需要对回归模型中的统计假设进行检验。
2.6 我们使用car包中的qqplot函数来检验模型的正态性。
在这里插入图片描述
可以看出,除了653、833这两个点,其他店都离直线很近,表明正态性假设符合的很好。
2.7 而线性假设已经在前面检验过了,故这里不再进行检验。
2.8 接下来运用ncvTest函数检验同方差性。
在这里插入图片描述
P值不显著(p=2.0419e-06),说明满足方差不变假设。
2.9 现在对这两个因素进行筛选,使用anova函数和AIC函数,对包含与不包含这两个因素的模型作对比:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过AIC值及p的对比,发现应该删去这两个因素。
2.10 接下来使用逐步回归法,得出一个更好的模型。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.11 最终的模型是volatile.acidity+chlorides + free.sulfur.dioxide + total.sulfur.dioxide + pH + sulphates + alcohol这七个因素,对这两个模型进行对比:
在这里插入图片描述
在这里插入图片描述
2.12 可以发现,后得到的这个模型明显比先前的模型要好,所以在这里可以得出质量有关于这七个因素的一个模型。对新构建的模型运用plot函数,观察其模型的拟合情况。
在这里插入图片描述
可以看出该模型的回归效果较为理想,基本符合了线性假设,同方差性,残差正态性(除了650、829、1273这三个点)。
2.13 对新构建的模型再次运用summary函数,可以得到一个新的计算公式:
在这里插入图片描述
Quality=4.43-1.01volatile-2.017chlorides+0.005free-0.0035total-0.48pH+0.88sulphates+0.29alcohol。
对计算公式进行代入数值计算,发现结果基本吻合。
3. 结论
结论:在对红酒质量的数据分析中,一共有11个变量,在经过筛选之后,得出volatile.acidity+chlorides + free.sulfur.dioxide + total.sulfur.dioxide + pH + sulphates + alcohol这七个因素才是影响红酒质量的因素,并且可以根据构建的回归模型,得到一个和红酒质量有关的计算公式:Quality=4.43-1.01
volatile-2.017chlorides+0.005free-0.0035total-0.48pH+0.88sulphates+0.29alcohol。
附录一:代码整合:
library(plyr)
library(car)
library(MASS)

setwd(“D:\作业\r语言数据处理”)
file<-read.table(“winequality-red.csv”,header=T,sep=",",comment.char="")
View(file)
summary(file)
par(mfrow=c(3,4))
boxplot(t1 f i x e d . a c i d i t y , m a i n = &quot; f i x e d . a c i d i t y &quot; ) b o x p l o t ( t 1 fixed.acidity,main=&quot;fixed.acidity&quot;) boxplot(t1 fixed.acidity,main="fixed.acidity")boxplot(t1volatile.acidity,main=“volatile.acidity”)
boxplot(t1 c i t r i c . a c i d , m a i n = &quot; c i t r i c . a c i d &quot; ) b o x p l o t ( t 1 citric.acid,main=&quot;citric.acid&quot;) boxplot(t1 citric.acid,main="citric.acid")boxplot(t1residual.sugar,main=“residual.sugar”)
boxplot(t1 c h l o r i d e s , m a i n = &quot; c h l o r i d e s &quot; ) b o x p l o t ( t 1 chlorides,main=&quot;chlorides&quot;) boxplot(t1 chlorides,main="chlorides")boxplot(t1free.sulfur.dioxide,main=“free.sulfur.dioxide”)
boxplot(t1 t o t a l . s u l f u r . d i o x i d e , m a i n = &quot; t o t a l . s u l f u r . d i o x i d e &quot; ) b o x p l o t ( t 1 total.sulfur.dioxide,main=&quot;total.sulfur.dioxide&quot;) boxplot(t1 total.sulfur.dioxide,main="total.sulfur.dioxide")boxplot(t1density,main=“density”)
boxplot(t1 p H , m a i n = &quot; p H &quot; ) b o x p l o t ( t 1 pH,main=&quot;pH&quot;) boxplot(t1 pH,main="pH")boxplot(t1sulphates,main=“sulphates”)
boxplot(t1 a l c o h o l , m a i n = &quot; a l c o h o l &quot; ) n e w d a t a &lt; − f i l e [ o r d e r ( f i l e alcohol,main=&quot;alcohol&quot;) newdata&lt;-file[order(file alcohol,main="alcohol")newdata<file[order(filequality),]
quality<-lm(quality~fixed.acidity+volatile.acidity+citric.acid+residual.sugar+chlorides+free.sulfur.dioxide+total.sulfur.dioxide+density+pH+sulphates+alcohol,data=t1)
summary(quality)
crPlot(quality)
outlierTest(quality)
stepAIC(quality, direction=“backward”)
anova(test1,quality)
AIC(quality,test1)
confint(quality)
state<-as.data.frame(scale(file))
t2<-lm(quality~fixed.acidity+volatile.acidity+citric.acid+residual.sugar+chlorides+free.sulfur.dioxide+total.sulfur.dioxide+density+pH+sulphates+alcohol,data=state)
coef(t2)
test<-lm(quality ~ volatile.acidity + chlorides + free.sulfur.dioxide + total.sulfur.dioxide + pH + sulphates + alcohol,data=file)
anova(test,quality)

  • 12
    点赞
  • 141
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
R语言是一种用于数据分析和统计建模的编程语言,非常适合进行kNN(k最近邻)算法的实施。kNN算法是一种基于实例的监督学习算法,用于分类和回归问题。 在进行葡萄数据的kNN分析之前,我们首先需要收集相关的葡萄数据集。对于葡萄数据集,我们可以选择常见的UCI葡萄数据集,包含多个特征,如精度、苹果酸含量、灰分含量等。 在R语言中,我们可以使用“caret”包来进行kNN分析。首先,我们需要加载“caret”包,并读取葡萄数据集: ```R library(caret) data <- read.csv("wine_data.csv") ``` 接下来,我们可以使用“trainControl”函数来设置交叉验证参数,然后使用“train”函数来构建kNN模型并进行训练: ```R ctrl <- trainControl(method = "cv", number = 5) knn_model <- train(Class ~ ., data = data, method = "knn", trControl = ctrl) ``` 在构建模型后,我们可以使用“predict”函数来对新的葡萄样本进行分类预测: ```R new_data <- data.frame(Alcohol = 13, Malic_Acid = 2, Ash = 2.5, ... ) prediction <- predict(knn_model, newdata = new_data) ``` 以上的代码中,我们创建了一个包含新葡萄样本特征的数据框,并使用训练好的kNN模型对其进行分类预测。 总结起来,R语言可以方便地进行葡萄数据的kNN分析。我们需要加载相应的包,读取数据集,构建kNN模型并进行训练,最后使用模型进行预测。这些步骤可以帮助我们理解和分析葡萄数据,并在分类问题中获得准确的预测结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值