广义线性模型下的数据分析(R语言)

一、实验目的:

通过上机试验,掌握利用R实现线性回归分析、逻辑回归、列联分析及方差分析,并能对分析结果进行解读。

数据:
链接: https://pan.baidu.com/s/1JqZ_KbZJEk-pqSUWKwOFEw 提取码: hxts

二、实验内容:

1、27名糖尿病人的血清总胆固醇(X1)、甘油三酯(X2)、空腹胰岛素(X3)、糖化血红蛋白(X4)、空腹血糖(Y )的测量值列于diabetes.txt:

(1)试建立空腹血糖与其它指标的多元线性回归方程, **并对回归结果进行解读,**包括各回归系数的显著性,此模型的拟合效果等。

(2)可以发现,(1)中的回归模型效果并不好。此时,需考虑自变量的选择是否合适。请以Y为因变量,以Xi(i=1,2,3,4)为候选自变量,使用下述两种方法:方法一:向前逐步回归法+AIC,方法二:向后逐步回归法+BIC;分别进行变量选择以建立最优的回归模型并对两种方法模型选择结果进行比较

2.数据文件ex.csv是关于200个不同年龄(age,定量变量)和性别(sex,定性变量,0和1分别代表女和男)的人对某项服务产品的观点(opinion,二水平定性变量,用1和0代表认可和不认可)的数据,将观点作为因变量,建立logistic模型加以分析,并预测一个年龄是30岁的女人对该项服务产品认可的可能性。

3.数据包ISwR中的数据集juul中含有三个分类变量: sex, tanner, menarche.

(1) 从juul中选择这3个变量组成新数据框njuul,并用na.omit函数删掉njuul里缺失值,仍命名为njuul。

(2)在数据框njuul下,对变量tanner、menarche进行列联分析,包括:绘制列联表;进行卡方独立性检验,并解释检验结果。

4、检验果汁中含铅量已有三种方法A1、A2、A3, 现研究出另一种快速检验法A4, 欲研究能否用A4代替前三种方法。以果汁为观察对象进行实验考察,不同的果汁当做不同的水平: B1为苹果, B2为葡萄汁, B3为西红柿汁, B4为苹果汁, B5桔子汁, B6菠萝柠檬汁。现进行双因素交错搭配试验,即用四种方法同时检验每一种果汁, 其检验结果如下表所示。问因素A(检验方法)和B(果汁品种) 对果汁的含铅量是否有显著影响?

果汁含铅量测试实验数据统计

B1 B2 B3 B4 B5 B6

A1 0.05 0.46 0.12 0.16 0.84 1.30

A2 0.08 0.38 0.40 0.10 0.92 1.57

A3 0.11 0.43 0.05 0.10 0.94 1.10

A4 0.11 0.44 0.08 0.03 0.93 1.15

(1)在R中生成方差分析所需要的数据框。(注:因子型变量A,B因子水平可用gl()函数给出,也可自己设定。所生成数据框应有24行。)

(2)进行双因素方差分析,并对R中方差分析结果给以解释。

三、实验过程与结果:

1.(1)多元线性回归:

R 复制代码
d1<-read.table("E:/学习资料及作业/2.2多元统计分析R/实验2/diabetes.txt",header = T)

f1<-lm(Y~X1+X2+X3+X4,data = d1)

summary(f1)

运行结果:

从运行结果看,拟合函数为:

因为4个自变量仅变量X3、X4较为显著,其余两个变量X1、X2显著性不明显,所以拟合效果并不好。

(2)向前逐步回归法+AIC:

R 复制代码
d2<-lm(Y~1,data = d1)

d2f<-step(d2,scope = list(upper=~X1+X2+X3+X4,lower=~1),direction = "forward")

summary(d2f)

后退法逐步回归:

R 复制代码
d2b<-step(f1,direction = "backward")

summary(d2b)

向前法回归初始模型只包含截距项,分别加入变量X1、X2、X3、X4,计算AIC,由计算结果知X4的AIC小于初始截距项的,因此回归模型中加入变量X4,继续迭代计算直到向模型中加入变量后,不能使AIC比上一次计算结果小时,表明该模型为最优模型。从运行结果知,向前法回归的最优模型为:

Y=5.9433+0.6382X4+0.1424X1-0.2706X3+0.3515X2

与第(1)问的模型一样,模型整体上较为显著,X2、X4显著性较好。

向后逐步回归法,初始模型包含所有变量,从中依次去掉一个变量,并计算AIC,发现去掉X1时AIC小于初始模型的,因此从模型中去掉变量X1,第二轮时,无论去掉哪一个变量其AIC值都没有小于上一步的,即此模型为最优模型:

Y=6.4996+0.4023X2-0.2870X3+0.6632X4

模型的整体显著性程度与向前法回归的一样,但是各个变量的显著性要比向前回归的好。

  1. logistic 模型:
R 复制代码
d3<-read.csv("E:/学习资料及作业/2.2多元统计分析R/实验2/ex.csv")

logit.glm<-glm(opinion~age+sex,family = binomial,data=d3)

summary(logit.glm)

logistic模型为:opinion=3.49978-0.07156age-1.77815sex,无论是模型整体还是各变量都及其显著。

预测一个年龄是30岁的女人对该项服务产品认可的可能性**:**

R 复制代码
prel<-predict(logit.glm,data.frame(age=30,sex=0))

p1<-exp(prel)/(1+exp(prel))

p1

这位30岁的女士,对某项服务产品认可的概率为0.7946。

  1. (1)
R 复制代码
install.packages("ISwR")

data(juul,package="ISwR")

njuul <- juul[, c('sex', 'tanner', 'menarche')]  # 从数据集中选3个变量组成新数据集

njuul <- na.omit(njuul)  # 删除缺失值

njuul

(2)在数据框njuul下,对变量tanner、menarche进行列联分析:

R 复制代码
table('menarche','tanner')  # 行、列

d4<-xtabs(~menarche+tanner,data=njuul)

d4

chisq.test(d4) #卡方独立性检验

menarche分为两类,tanner分为5类,tanner为类1、2时,样本几乎都属于menarche的类1,卡方独立性检验原假设为行menarche、列tanner变量独立,由于P<0.05,所以拒绝原假设,认为tanner与menarche不独立。

4.(1)生成数据框

R 复制代码
A <- factor(rep(c("A1", "A2", "A3", "A4"), times = 6))

B <- factor(rep(c("B1", "B2", "B3", "B4", "B5", "B6"), each = 4))

y <- c(0.05, 0.08, 0.11, 0.11, 0.46, 0.38, 0.43, 0.44, 0.12, 0.40, 0.05, 0.08, 0.16,

       0.10, 0.10, 0.03, 0.84, 0.92, 0.94, 0.93, 1.30, 1.57, 1.10, 1.15)

df <- data.frame(A, B, y)

df

(2)双因素方差分析:

R 复制代码
fit <- aov(y ~ A+B, data = d5) # 不加交互项

summary(fit)

从运行结果可以看出,果汁品种(B)对果汁含铅量有显著影响(F=83.976,P<0.05),而检验方法(A)对果汁含铅量没有显著影响(F=1.629,P=0.225)。

R 复制代码
fit1<-aov(y~A+B+A:B,data=d5) # 加交互项

summarry(fit1)

加了交互项,没有P、F值,推测果汁品种和检验方法的交互作用(A:B)对果汁含铅量也没有显著影响。因此得出结论:果汁品种对果汁含铅量有显著影响,而检验方法对果汁含铅量没有显著影响。

相关推荐
生信碱移23 分钟前
入门级宏基因组数据分析教程,从实验到分析与应用
人工智能·经验分享·python·神经网络·数据挖掘·数据分析·数据可视化
永洪科技1 小时前
AI领域再突破,永洪科技荣获“2025人工智能+创新案例”奖
大数据·人工智能·科技·数据分析·数据可视化
拾荒的小海螺2 小时前
【数据分析实战】使用 Matplotlib 绘制折线图
信息可视化·数据分析·matplotlib
拓端研究室TRL12 小时前
Python贝叶斯回归、强化学习分析医疗健康数据拟合截断删失数据与参数估计3实例
开发语言·人工智能·python·数据挖掘·回归
Code_流苏14 小时前
Python星球日记 - 第20天:数据分析入门
python·数据分析·数据可视化·数据清洗·pandas库
ArimaMisaki16 小时前
量化策略分类、优劣势及对抗风险解析
人工智能·金融·分类·数据挖掘·游戏策划
用户1997010801816 小时前
深入研究:京东图片搜索商品 API 详解
大数据·爬虫·数据挖掘
Miu_数分版16 小时前
PowerBi中VALUES怎么使用?
数据分析
邢博士谈科教18 小时前
在执行生信分析的时候提示缺少一些R包的报错解决
数据挖掘·r语言
kaka.liulin -study18 小时前
Multi Agents Collaboration OS:数据与知识协同构建数据工作流自动化
人工智能·python·深度学习·数据分析