我想知道如何为矩阵相关热图添加另一层重要且需要的复杂性,例如除了R2值(-1到1)之外,在显着性水平星的方式之后的p值?
在这个问题中没有意图将显着性水平星或p值作为文本放在矩阵BUT的每个方格上,而不是在矩阵的每个方格上的显着性水平的图形开箱即用表示中.我认为只有那些享受创新思维祝福的人才能赢得掌声,解开这种解决方案,以便有最好的方式来代表我们的"半真半导体相关热图"中复杂的复杂成分.我google了很多但从未见过正确或我会说"眼睛友好"的方式来表示显着性水平加上反映R系数的标准色调.
可重现的数据集可在此处找到:
http://learnr.wordpress.com/2010/01/26/ggplot2-quick-heatmap-plotting/
R代码请在下面找到:
library(ggplot2)
library(plyr) # might be not needed here anyway it is a must-have package I think in R
library(reshape2) # to "melt" your dataset
library (scales) # it has a "rescale" function which is needed in heatmaps
library(RColorBrewer) # for convenience of heatmap colors, it reflects your mood sometimes
nba <- read.csv("http://datasets.flowingdata.com/ppg2008.csv")
nba <- as.data.frame(cor(nba[2:ncol(nba)])) # convert the matrix correlations to a dataframe
nba.m <- data.frame(row=rownames(nba),nba) # create a column called "row"
rownames(nba) …Run Code Online (Sandbox Code Playgroud) 我遇到了 PCA 分析,并注意到 R 中不同函数返回的不同值。这个问题的目的是消除每个函数输出的歧义。关于为什么这些函数返回不同的值,我没有找到令人满意的答案。比较的函数有:stats::princomp()、stats::prcomp()、psych::principal()和FactoMineR::PCA()。为了进行比较,对 数据集进行了缩放和居中,并且全部设置为返回 4 个组件,但为了简洁起见,此处仅显示了前两台 PC。
MWE下面是设置案例的代码。请随意报告 R 中的任何其他函数,我希望您可能会发现在一个地方比较其输出会有所帮助。
princompPCA <- princomp(USArrests, cor = TRUE)
prcompPCA <- prcomp(USArrests,scale.=TRUE)
principalPCA <- principal(USArrests, nfactors=4 , scores=TRUE, rotate = "none",scale=TRUE)
library(FactoMineR)
fmrPCA <- PCA(USArrests, ncp=4, graph=FALSE) # vars scaled data
# now the first two PCs from each package into one data frame
dfComp <- cbind.data.frame(princompPCA$scores[,1:2],prcompPCA$x[,1:2],principalPCA$scores[,1:2],fmrPCA$ind$coord[,1:2])
names(dfComp) <- c("princompDim1","princompDim2","prcompDim1","prcompDim2","principalDim1","principalDim2","fmrDim1","fmrDim2")
head(dfComp)
Run Code Online (Sandbox Code Playgroud)
输出:
princompDim1 princompDim2 prcompDim1 prcompDim2 principalDim1 …Run Code Online (Sandbox Code Playgroud) 这个问题是这里相同主题的延续.以下是本书的最小工作示例:
Wehrens R. Chemometrics在自然科学和生命科学领域进行R多元数据分析.第1版.海德堡; 纽约:施普林格.2011.(第250页).
这个例子取自本书及其包ChemometricsWithR.它强调了使用交叉验证技术进行建模时的一些缺陷.
目标:
一种交叉验证的方法,使用相同的重复CV集来执行已知的策略,PLS通常由LDA逻辑回归,SVM,C5.0,CART或caret包的精神进行.因此,每次调用等待分类器之前都需要PLS,以便对PLS 得分空间进行分类而不是对观察本身进行分类.PCA在使用任何分类器建模之前,插入符号包中最近的方法是作为预处理步骤.下面是一个PLS-LDA程序,只有一个交叉验证来测试分类器的性能,没有10倍的CV或任何重复.下面的代码取自上面提到的书,但有一些更正否则会引发错误:
library(ChemometricsWithR)
data(prostate)
prostate.clmat <- classvec2classmat(prostate.type) # convert Y to a dummy var
odd <- seq(1, length(prostate.type), by = 2) # training
even <- seq(2, length(prostate.type), by = 2) # holdout test
prostate.pls <- plsr(prostate.clmat ~ prostate, ncomp = 16, validation = "CV", subset=odd)
Xtst <- scale(prostate[even,], center = colMeans(prostate[odd,]), scale = apply(prostate[odd,],2,sd))
tst.scores <- Xtst %*% prostate.pls$projection # …Run Code Online (Sandbox Code Playgroud) 我有一个需要分类的3类问题。我想在nnet软件包中使用多项逻辑回归。班级结局有3个因素,P,Q,R。我想将Q作为基本因素。
所以我尝试将它写成这样的对比:
P <- c(1,0,0)
R <- c(0,0,1)
contrasts(trainingLR$Class) <- cbind(P,R)
Run Code Online (Sandbox Code Playgroud)
检查了它:
> contrasts(trainingLR$Class)
P R
P 1 0
Q 0 0
R 0 1
Run Code Online (Sandbox Code Playgroud)
现在multinom():
library(nnet)
multinom(Class ~., data=trainingLR)
Run Code Online (Sandbox Code Playgroud)
输出:
> multinom(Class ~., data=trainingLR)
# weights: 39 (24 variable)
initial value 180.172415
iter 10 value 34.990665
iter 20 value 11.765136
iter 30 value 0.162491
iter 40 value 0.000192
iter 40 value 0.000096
iter 40 value 0.000096
final value 0.000096
converged
Call:
multinom(formula = Class ~ …Run Code Online (Sandbox Code Playgroud) 进行一些 PCA 分析,并与FactoMineR函数的结果进行比较时,我没有得到相同的结果。一个例子PCAprcompbase
library(ISLR)
library(FactoMineR)
data("NCI60")
df <- NCI60$data
pca_prcomp <- prcomp(df, scale. = T)
pca_facto <- FactoMineR::PCA(df, scale.unit = T, graph = F, ncp = 65)
# One column is missing
dim(pca_prcomp$x)
dim(pca_facto$ind$coord)
# Values are similiare - but not the same
head(pca_prcomp$x[, 1:2])
head(pca_facto$ind$coord[, 1:2])
# Using scale function - does not return same values
pca_facto_scale <- PCA(scale(df), scale.unit = F, graph = F, ncp = 65)
head(pca_facto$ind$coord[, 1:2], 3)
head(pca_facto_scale$ind$coord[, 1:2], 3)
Run Code Online (Sandbox Code Playgroud) r ×5
correlation ×1
function ×1
ggplot2 ×1
heatmap ×1
multinomial ×1
nnet ×1
pca ×1
r-caret ×1
significance ×1