【问题标题】:Q-Q Plot - Split one plot into 2 groupsQQ 绘图 - 将一个绘图分成 2 组
【发布时间】:2021-12-05 14:17:01
【问题描述】:

我有一个数据集,我试图在其中拟合 Y 轴的回归模型 - 它有 35 行。 在回归之前,我正在运行一个QQ图来查看数据是否正常,但是我的数据在同一个图中遵循两个趋势,这意味着有2个组,我应该如何根据组拆分现有的QQ图?

qqnorm(sqrt(Total_Crime))
qqline(sqrt(Total_Crime))

以上是我现在使用的代码

期待:-

qqnorm(sqrt(Total_Crime **where crime count is >500**))
qqline(sqrt(Total_Crime ** where crime count is >500**))

【问题讨论】:

  • 这取决于Total_crime的结构。请显示该对象的一部分,最好使用dput(head(Total_crime))
  • c(6370, 1515662, 25546, 576090, 970440, 54252) 就是这个样子
  • 所以试试qqnorm(sqrt(Total_Crime[Total_Crime > 500]))
  • 也许我误解了一些东西,但是对于线性回归,数据点本身不是均匀分布的(最好的情况)吗?但是为了满足 lm 的有效条件之一,拟合的残差应该完全正态分布在 0 附近?
  • @dario 线性模型假定误差的正态性(由残差近似)而不是输入数据。

标签: r hypothesis-test


【解决方案1】:

假设您想为每个 Species 做一个 qq 图作为样本组(子集)来评估变量 Sepal.Length 的正态性。然后就可以使用ggplot2

library(tidyverse)

data <-
  iris %>%
  group_by(Species) %>%
  transmute(Sepal.Length = Sepal.Length %>% scale())
data
#> # A tibble: 150 x 2
#> # Groups:   Species [3]
#>    Species Sepal.Length[,1]
#>    <fct>              <dbl>
#>  1 setosa            0.267 
#>  2 setosa           -0.301 
#>  3 setosa           -0.868 
#>  4 setosa           -1.15  
#>  5 setosa           -0.0170
#>  6 setosa            1.12  
#>  7 setosa           -1.15  
#>  8 setosa           -0.0170
#>  9 setosa           -1.72  
#> 10 setosa           -0.301 
#> # … with 140 more rows

data %>%
  ggplot(aes(sample = Sepal.Length)) +
  stat_qq() +
  stat_qq_line() +
  facet_wrap(~Species) +
  coord_fixed()

reprex package (v2.0.1) 于 2021 年 10 月 18 日创建

请记住,线性模型假定误差(由残差近似)呈正态分布,而不是任何协变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 2018-10-10
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    相关资源
    最近更新 更多