NormData.log <- log2(NormData + 1)> Norm.interest <- NormData.log[rownames(filter),] # filter是步骤5获得的基因集 7 使用psych 计算两两相关性 psych在CRAN官网进行下载。 以相关性 > 0.9 p小于0.01筛选出共表达基因 >library("psych")>Norm.interest.corr <- corr.test( t(Norm.interest), method
psych包默认切尾比例是0.1,也就是将数据排序后分别去掉两端10%的数据。当然,切尾均值的计算会比这种直接去掉最大值和最小值的计算方法要稍微复杂一点,但仔细看也并不难理解。 具体的R代码实现如下: #创建数据,设定切尾比例 library(psych) d <- c(1,2,3,5) #将上一期内容里的变量a去除NA值 d <- sort(d) #排序 r <- 0.1 #设置切尾比例是0.1,与psych包的缺省值一致 count <- length(d) #计算初始数据个数 lower <- round(count*r+1) #切尾后的第一个数的位置 upper < 可以看出最终的计算结果和我们上一期psych包的计算一致。 这里可以看出,换了数据的计算结果四舍五入后也一致,当然这里由于使用的是随机数,所以你做出来的值可能和我的不一样,这个没有关系,只要你用基本函数计算出的切尾均值和psych包计算的一致即可。
第一种办法是先使用library()函数加载这个包,然后直接输入函数名;另外一种办法是不加载,直接使用包名+两个冒号+函数,比如Hmisc::rcorr(as.matrix(df)) 第二个问题是 使用psych 包中的corr.test()函数做相关性分析,遇到警告 Warning message: In psych::corr.test(df, method = "pearson") : Number of 如果只是为了做相关性分析可以忽略这个警告,因为这个函数还会同时计算相关系数的置信区间,要求数据大于三行 可以看下3行数据和4行数据的区别 df<-iris[1:3,1:3] print(psych::corr.test (df,method="pearson"),short=F) Call:psych::corr.test(x = df, method = "pearson") Correlation matrix ::corr.test(df,method="pearson"),short=F) Call:psych::corr.test(x = df, method = "pearson") Correlation
#安装psych包 install.packages("psych") #加载psych包 library(psych) #使用psych包自带的数据集sat.act #查看前6行 head(sat.act
目录 1 数据结构 str() dim() head() 2 描述性统计分析 summary() psych::describe() 分组计算doBy::summaryBy 分组计算psych::describeBy 推荐使用summary()、psych::describe() ## 描述统计# 1.1 summary()summary(mtcars) #具体查看下方示例 # 1.2 psych::describe library(psych)psych::describe(mtcars) #具体查看下方示例 # 1.3 Hmisc::describelibrary(Hmisc)describe(df) # 1.4 包 具体查看下方示例# 分组计算的扩展,doBy包和psych包提供了分组计算的描述性统计量的函数,doBy包中的summaryBy()函数使用的基本格式 summary()函数提供了最小值、最大值、四分位数 :8.000 psych::describe(mtcars) #推荐使用 > psych::describe(mtcars) vars n mean sd median
Petal.Width -0.3661259 4.073229e-066 Petal.Length Petal.Width 0.9628654 0.000000e+00 04 — 多变量与多变量相关psych ::corr.test 比较6个datafrme中前一半个与一半样本的关联,需要使用psych包的corr.test()。 > dt <- iris[,-5]> nrow(dt)[1] 150> dt_up <- dt[c(1:75),]> dt_down <- dt[c(76:150),]> library(psych)> psych_cor <- corr.test(dt_up, dt_down, method = "pearson")> psych_corCall:corr.test(x = dt_up, y = dt_down 0.04 To see confidence intervals of the correlations, print with the short=FALSE option > heatmap(x = psych_cor
cont.vars 中各个变量的样本标准差: sapply(cont.vars, sd) 基本包中没有提供计算偏度和峰度的函数,我们可以根据公式自己计算,也可以调用其他包里的函数计算,例如 Hmisc 包、psych 下面以 psych 包为例进行说明。psych 包被广泛应用于计量心理学。 psych 包里的函数 describe( )可以计算变量忽略缺失值后的样本量、均值、标准差、中位数、截尾均值、绝对中位差、最小值、最大值、全距、偏度、峰度和均值的标准误等。 例如: R.Version() library(psych) describe(cont.vars) 在很多时候我们还想计算某个分类变量各个类别下的统计量。 psych 包里的函数 describeBy( )也可以分组计算与函数 describe( )相同的统计量,例如: describeBy(cont.vars, birthwt$smoke) 函数 describeBy
第二部分:使用“psych”包进行统计描述 上面的例子都是使用R语言基本函数进行统计描述,实际上R语言里面还有一个很强大的统计包---“psych“,这个R包一开始是计量心理学(Psychometric #使用“psych“包进行统计描述 library(psych) #加载R包 #trimmed是指切尾均值 # mad是median absolute deviation,也称绝对中位差 # skew是偏度 在psych包中我们可以使用describe.by()函数直接获得数据的基本统计量,这里面有四个统计量trimmed(trimmed mean,切尾均值)、mad(median absolute deviation
用R语言基本函数可以实现: d <- c(1,2,3,5) #将a去除NA值 mean(((d-mean(d))/sd(d))^3) #计算偏度,结果和psych包的计算一致,是正偏态分布 [1] 0.2823139 R语言基本代码实现如下: mean(((d-mean(d))/sd(d))^4) [1] 1.038214 mean(((d-mean(d))/sd(d))^4)-3 # 将结果减去3,变成和psych mean(((e-mean(e))/sd(e))^4)-3 # 将结果减去3,变成和psych计算结果一致 [1] 0.05919889 describe.by(e) ?
这个包还有一个特点,就是可以指定某几个特征,然后计算跟剩下特征之间的相关性 #focus on mgp,计算所有特征跟mpg这个特征之间的相关性 focus(correlate(mtcars), mpg) 三、psych 包 #安装psych包 install.packages("psych") library(psych) corr.test(mtcars) 得到特征两两之间的相关系数如下 同时也能得到相关性的p值
3 R语言实战 依据《R语言实战》提供的实例,下面用psych程序包中的USJudgeRatings数据集进行主成分分析,这个数据集描述的是律师对美国高等法院法官的评分情况,部分数据集及各变量含义如下所示 : >install.packages("psych") >library(psych) >USJudgeRatingsz 3.1 数据预处理 数据集中的CONT变量表示的是律师与法官的联系次数,由于该变量对评分情况没有影响 使用psych包中的pricipal() >pc<-principal(USJudgeRatings,nfactors=1) >pc 使用基础函数pricomp() >pc<-princomp(USJudgeRatings
这里我想大家推荐使用”psych”包的corr.test()函数,它不仅给出相关系数,也给出各个相关系数的p值,使用很方便。 library(psych) #加载R包 corr.test(mtcars) #计算相关系数及其显著性 #另外我们也可以绘制相关系数图 data <- corr.test(mtcars) r <- data 好了,今天的内容就分享到这里,最后提醒一下大家,“psych”包真的很强大,大家学有余力的时候一定要好好掌握它!
来实现这一模型.由于R软件中有多个函数可以处理这件事情,所以我们选用两个主要的来实现,一个是R自带的函数princomp和factannal,这个比较基础,但能让我们更加清楚计算的过程,另外一个是扩展包psych 所以KAISER-Harris准则保留特征值大于1的主成分—-碎石图 方法二:用相同大小的随机数模拟原始矩阵,若原来矩阵特征值大于模拟的相应平均特征值则主成分保留. install.packages("psych ") library(psych) fa.parallel(USJudgeRatings[,-1],fa="pc",n.iter = 100,show.legend = F) abline
3.精神错乱 时髦、响亮和逃避现实的Psych Out设计趋势始于对极简主义的回应,但是以一种新的方式。 “去年的半超现实主义设计趋势与此密切相关——它非常具有未来感、趣味性和趣味性。 Psych Out 也一样——但它更重、更奇怪,而且有点暗,”莫洛伊说。 认为它强烈参考了 1970 年代的迷幻和新艺术运动,这种设计趋势不仅仅是一次怀旧之旅。相反,它是新旧的令人兴奋的混合。 他们的音乐(就像 Psych Out 的大部分设计一样)深受 1970 年代的影响,结合了现代主题以及对机器人、自动化和气候变化的抒情参考。 回到视觉设计,谈到气候变化,Molloy 说她已经看到了许多在 Psych Out 趋势中提到气候和可持续性的工作例子。 ” 在插图中,Psych Out 体现了很多 Molloy 所说的“远方”意象——漂浮、飞行或穿越幻想场景或外太空的人物。
.: 1 1 1 1 1 1 1 1 1 1 ... psych::headTail(iris) ## Sepal.Length Sepal.Width Petal.Length Petal.Width 1.0000000 0.9628654 ## Petal.Width 0.8179411 -0.3661259 0.9628654 1.0000000 KMO和Bartlett球形检验 使用psych 实现,关于这两个检验的解读大家自行学习~ psych::KMO(iris[,-5]) ## Kaiser-Meyer-Olkin factor adequacy ## Call: psych::KMO( psych::cortest.bartlett(iris[,-5]) ## R was not square, finding R from data ## $chisq ## [1] 706.9592
psych::describe(diamonds[myvars]) #可以计算非缺失值的数量、平均值、标准差、中位数、截尾均值、绝对中位差、最小值、最大值、值域、偏度、峰度和平均值的标准误。 ? 除此之外,doBy包中的summaryBy函数和psych包中的describeBy函数也提供了更为个性化的描述性统计量输出。 library("doBy") library("psych") summaryBy(mpg+hp+wt~am, data=mtcars, FUN=mystats) ? 本文小结: R语言: 描述性统计: summary sapply Hmisc::describe pastecs::stat.desc psych::describe aggregate by doBy ::summaryBy psych::describeBy 列联表: table() xtabs() prop.table() margin.table() addmargins
除了基础安装以外,我们还将使用psych和ggm包。 7.3.1 相关的类型 1.Pearson、Spearman和Kendall相关 Pearson积差相关系数衡量了两个定量变量之间的线性相关程度。 psych包中提供的corr.test()函数可以一次做更多事情。corr.test()函数可以为Pearson、Spearman或Kendall相关计算相关矩阵和显著性水平。 >library(psych) >corr.test(states,use=”complete”) 参数use=的取值可为"pairwise"或"complete"(分别表示对缺失值执行成对删除或行删 在多元正态性的假设下,psych包中的pcor.test()函数①可以用来检验在控制一个或多个额外变量时两个变量之间的条件独立性。 psych包中的r.test()函数提供了多种实用的显著性 检验方法。
,选中路径里面下载好的程序包,会出现successfully unpacked的提示 > utils:::menuInstallLocal() package ‘psych’ successfully > install.package("psych") Error in install.package("psych") : 没有"install.package"这个函数 > install.packages ("psych") --- 在此連線階段时请选用CRAN的鏡子 --- 还安装相依关系‘tmvnsim’, ‘mnormt’ 试开URL’https://cloud.r-project.org/bin 193615 bytes (189 KB) downloaded 189 KB 试开URL’https://cloud.r-project.org/bin/windows/contrib/4.1/psych unpacked and MD5 sums checked package ‘mnormt’ successfully unpacked and MD5 sums checked package ‘psych
K-Means算法的优化 多维的数据映射为一维的数据,主成分分析,崖底碎石法 #install.packages("psych") library(psych) pColumns <- c('Sepal.Length
包中的describe()计算描述性统计量: 在psych包中,可以通过describe()来计算非缺失值的数量、平均数、标准差、中位数、截尾均值、绝对中位数、最小值、最大值、值域、偏度、峰度和平均值的标准误差 (注意,此方法会将因子型变量当成数值型来计算): > library(psych) > psych::describe(iris) vars n mean sd median FUN),其中data为输入的数据框,INDICES是一个因子型或几个因子型变量组成的list,是分组依据,FUN是任意函数(包括自编函数): > by(iris[,-5],iris$Species,psych 包中的describeBy()分组计算概述统计量: psych中的describeBy(data,by),其中data为目标数据框,by为分组依据的数据: > library(psych) > describeBy 利用psych中的corr.test()同时进行多变量间的相关显著性检验: > library(psych) > data(iris) > > corr.test(x=iris[,-5],use='complete