第二,执行代码。
这里是R进行数据分析的一些代码,希望对你有用。
1.1导入数据
install.packages('xslx')
library(xlsx)
Sys.setlocale("LC_ALL", "zh_cn.utf-8")
a=read.xlsx2('d:/1.xlsx',1,header=F)
head(a)显示前六行
class(a$y)/str(a)查看列/全集数据类型
a$y=as.numeric(a$y)转换数据类型
1.2方差分析(F test)
with(a,tapply(liqi,tan,shapiro.test))正态性检验
library(car)leveneTest(liqi~tan,a)方差齐性检验
q=aov(liqi~tan*chong,a)方差分析(正态型)
summary(q)
TukeyHSD(q)多重比较
1.3卡方测验(Pearson Chisq)
a1=summarySE(a,measurevar='y', groupvars=c('x1','x2'))卡方检验(逻辑型/计数型)
aa=a1$y
aaa=matrix(a2,ncol=2)
aaa= as.table(rbind(c(56,44), c(36,64), c(48,52),c(58,42)))
dimnames(aaa)= list(group=c("不添加抗性","不添加敏感","添加抗性","添加敏感"),effect=c("存活","死亡"))
aaa=xtabs(data=a,~x+y)
chisq.test(a)误差分析(卡方测验,Pearson法)
install.packages("rcompanion")
library(rcompanion)
pairwiseNominalIndependence(a)多重比较
q=lm(data=a,y~x1*x2)一般线性模型(正态性)
summary(q)
q=glm(data=a,y~x1*x2,family = gaussian(link='identity'))广义线性模型(正态性)
summary(q)
q=glm(data=a,y~x1*x2,family = binomial(link='logit'))广义线性模型(逻辑型,二项分布)
summary(q)
q=glm(data=a,y~x1*x2,family = poisson(link='log'))广义线性模型(计数型,泊松分布)
summary(q)
install.packages('lmerTest')一般线性混合效应模型(正态性)
library(lmerTest)
install packages(‘lme4’)
library(lme4)
q=lmer(data=a,y~x1*(1|x2))
q=lmer(data=a,y~x1*(1|x2),family = gaussian(link='identity'))广义线性混合效应模型(正态性)
q=glmer(data=a,y~x1*(1|x2),family = binomial(link='logit'))广义线性混合效应模型(逻辑型,二项分布)
q=glmer(data=a,y~x1*(1|x2),family = poisson(link='log'))广义线性混合效应模型(计数型,泊松分布)
summary(q)
install.packages('car')
install.packages('openxlsx')
library(car)
install.packages('nlme')
library(nlme)
Anova(q,test='Chisq')线性模型的误差分析(似然比卡方测验,Wald法)
lsmeans(q,pairwise~chuli,adjust = "tukey")线性模型的多重比较(tukey法)
只是一些杂乱的笔记,没有注明出处。
简单的逻辑回归模型 logistic regression model,适用于因变量是二分变量的分析。
回归的本质是建立一个模型用来预测,而逻辑回归的独特性在于,预测的结果是只能有两种,true or false。
在R里面做逻辑回归也很简单,只需要构造好数据集,然后用glm函数(广义线性模型(generalized linear model))建模即可,预测用predict函数。
可以用两种形式的数据来做分析:
模型输出的结果,采用summary()来查看,可以看到具体的模型信息,回归系数,系数是否显著等。(需要注意的是,Logistic为非线性模型,回归系数是通过极大似然估计方法计算所得)
summary() 展示拟合模型的详细结果
如果某个变量有多个不同的水平,你想查看一下这个变量总体是否有统计学意义,可以做一下联合检验,用anova()来查看分析偏差表。
anova() 生成一个拟合模型的方差分析表,或者比较两个或更多拟合模型的方差分析表
结果可以这么理解,随着变量从第一个到最后一个逐个加入模型,模型的课解释方差发生变化,通过看p值,是否通过显著性检验。
说明由上述这些变量组成的模型是有意义的,并且是正确的。
anova(object = model2,test = "Chisq")
可以看到这个数据集是关于申请学校是否被录取的,根据学生的GRE成绩,GPA和排名来预测该学生是否被录取。
其中GRE成绩是连续性的变量,学生可以考取任意正常分数。
而GPA也是连续性的变量,任意正常GPA均可。
最后的排名虽然也是连续性变量,但是一般前几名才有资格申请,所以这里把它当做因子,只考虑前四名!
而我们想做这个逻辑回归分析的目的也很简单,就是想根据学生的成绩排名,绩点信息,托福或者GRE成绩来预测它被录取的概率是多少!
结果解读:
根据对这个模型的summary结果可知:
GRE成绩每增加1分,被录取的 优势对数(log odds) 增加0.002
而GPA每增加1单位,被录取的优势对数(log odds)增加0.804,不过一般GPA相差都是零点几。
最后第二名的同学比第一名同学在其它同等条件下被录取的优势对数(log odds)小了0.675,看来排名非常重要啊!!!
这里必须解释一下这个优势对数(log odds)是什么意思了, 如果预测这个学生被录取的概率是p,那么优势对数(log odds)就是log2(p/(1-p)),一般是以自然对数为底。
glmer()模型下,需要用Anova 大写,Anova(model,type=3)来查看卡方值和p值,这样输出结果和jamovi是相同的。