在R中创建多变量Q-Q图

5cg8jx4n  于 2024-01-03  发布在  其他
关注(0)|答案(3)|浏览(175)

我想用R中的Q-Q图检验多元和单变量正态性。我用过几种不同的方法--它们似乎都不起作用。我是R的新手,如果能得到任何帮助,我将不胜感激。
我的数据集= vdata_clean1
我有15个预测变量(IV),但没有React变量(DV),因为我正在运行一个验证性因素分析(15个变量代表15种不同类型的项目,构成了我正在测试的量表)。
我安装了以下软件包:

  1. install.packages("lavaan", dependencies=TRUE)
  2. install.packages ("semPlot")
  3. install.packages ("semTools")
  4. install.packages("psych")
  5. install.packages("MVN")
  6. install.packages("mvtnorm")
  7. install.packages("ggplot2")
  8. install.packages("qgraph")
  9. install.packages("psych")

字符串
1.首先,我使用了mvn函数(多变量q-q图)

  1. mvn(data = vdata_clean1, subset = NULL, mvnTest = c("mardia"),
  2. covariance = TRUE, tol = 1e-25, alpha = 0.5, scale = FALSE, desc
  3. = TRUE, transform = "none", R = 1000, univariateTest = c("SW"),
  4. univariatePlot = "none", multivariatePlot = "q-q",
  5. multivariateOutlierMethod = "none", bc = FALSE, bcType =
  6. "rounded", showOutliers = FALSE, showNewData = FALSE)


=>我没有收到错误消息,但图不显示。

1.其次,我尝试了qqnorm函数(多变量q-q图)

  1. qqnorm(vdata_clean1, ylim, main = "Normal Q-Q Plot", xlab =
  2. "Theoretical Quantiles", ylab = "Sample Quantiles", plot.it =
  3. TRUE, datax = FALSE)


=>我收到以下错误消息,但没有绘图:

  1. Error: Must use a vector in `[`, not an object of class matrix.
  2. Call `rlang:last_error()` to see a backtrace'

  • 我尝试了一个变量的ggplot函数(ILproto_1)(单变量q-q图)
  1. ggplot(vdata_clean1, aes(sample = ILproto_1)) + stat_qq() +
  2. stat_qq_line() + labs(title= "Normality Q-Q Plot (ILproto_1)", y
  3. = "Sample Quantiles") + theme_classic() `


=>我收到了这个错误消息:

  1. Don't know how to automatically pick scale for object of type
  2. haven_labelled. Defaulting to continuous.
  3. Don't know how to automatically pick scale for object of type
  4. haven_labelled. Defaulting to continuous.
  5. Error in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x,
  6. x$y, :
  7. polygon edge not found
  8. In addition: Warning message:
  9. In grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y,
  10. : no font could be found for family "Arial"
  • 我还尝试了使用ggplot函数(针对变量ILproto_1)绘制直方图
  1. ggp1 <- ggplot(vdata_clean1, aes(x = ILproto_1))
  2. ggp1 <- ggp1 + geom_histogram(binwidth=1, colour="black",
  3. aes(y=..density.., fill=..count..))
  4. ggp1 <- ggp1 + scale_fill_gradient("Count", low="#DCDCDC",
  5. high="#7C7C7C")
  6. ggp1 <- ggp1 + stat_function(fun=dnorm,
  7. color="red",
  8. args=list(mean=mean(vdata_clean1$ILproto_1),
  9. sd=sd(vdata_clean1$ILproto_1)))
  10. ggp1

=>没有错误消息,但我没有收到任何图

guykilcj

guykilcj1#

如果没有一个可重复的例子,这是很困难的。尽管如此,这使用了mtcars数据集来创建一个包含11个变量的嵌套框架,这些变量使用ggplot2

  1. library(tidyr)
  2. library(ggplot2)
  3. mtcars%>%
  4. gather()%>%
  5. ggplot(., aes(sample = value)) +
  6. stat_qq()+
  7. facet_wrap(vars(key), scales ='free_y')

字符串


的数据

smtd7mpg

smtd7mpg2#

您可以从{RVAideMemoire}包中查看mqqnorm函数。
它基于平方广义距离创建多变量QQ图,并使用卡方作为理论分布。

eqfvzcg8

eqfvzcg83#

当你有一个变量集合时,如mtcars数据中的变量集合,单变量QQ图通常太令人困惑。
对于多变量数据,您真正需要的是马氏平方距离的chisq-QQ图。当数据为NVN时,这应该遵循p个变量的p个自由度的$\chi^2$分布。
函数heplots::cqplot为您绘制此图。它还通过标准和去趋势版本提供点识别。

  1. heplots::cqplot(mtcars, id.n = 2)

字符串
x1c 0d1x的数据

  1. heplots::cqplot(mtcars, id.n = 2, detrend = TRUE)


相关问题