楼主: 耕耘使者
18025 8

[程序分享] 正态QQ的R做法与修正 [推广有奖]

贵宾

已卖:5006份资源

学术权威

39%

还不是VIP/贵宾

-

威望
4
论坛币
1811021 个
通用积分
171.7911
学术水平
109 点
热心指数
173 点
信用等级
87 点
经验
93428 点
帖子
4549
精华
0
在线时间
2848 小时
注册时间
2006-4-6
最后登录
2025-7-12

楼主
耕耘使者 发表于 2013-11-17 20:09:25 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
R中正态QQ图的做法是:以R自带数据AirPassengers为例
  1. qqnorm(AirPassengers)
  2. qqline(AirPassengers,col="red")
复制代码
结果:
TT截图未命名.bmp
我觉得不妥,自己编程制作了正态QQ图,与大家分享,脚本如下:
  1. y=quantile(AirPassengers,seq(0,1,0.01))
  2. x=qnorm(seq(0,1,0.01),mean(AirPassengers),sd(AirPassengers))
  3. plot(x,y,ylim=c(0,max(AirPassengers)))
  4. abline(a=0,b=1,col="red")
复制代码
结果:
TT截图未命名.bmp
或者再规范一些:
  1. y=quantile(AirPassengers,seq(0,1,0.01))
  2. x=qnorm(seq(0,1,0.01),mean(AirPassengers),sd(AirPassengers))
  3. plot(x,y,ylim=c(0,max(AirPassengers)),xlim=c(0,max(AirPassengers)))
  4. abline(a=0,b=1,col="red")
复制代码
结果:
TT截图未命名.bmp

解释或分析:纵轴是数据的实际分位数,横轴是正态分布的理论分位数,红线是45度的参考线,如果数据是正态分布,则散点应该落在直线上。即实际分位数与理论分位数偏差不大。反之,如果偏离较大,则证明数据并非来自正态总体。
本例来看,散点与参考线偏离较大,并不服从正态分布。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Passenger quantile abline ENGER quant 制作

回帖推荐

hellen_dn 发表于9楼  查看完整内容

不错,受教了,谢谢

沙发
tempta 发表于 2013-11-17 20:24:22
深奥!
已有 1 人评分热心指数 收起 理由
耕耘使者 + 1 鼓励积极发帖讨论

总评分: 热心指数 + 1   查看全部评分

清心寡欲

藤椅
耕耘使者 发表于 2013-11-17 20:30:40
tempta 发表于 2013-11-17 20:24
深奥!
谢谢您的提醒,已经在最后加了解释和说明。

板凳
jmpamao 发表于 2013-11-17 23:41:23
为楼主

和楼主一起学习。
y=quantile(..,seq(0,1,0.01), 进行了一次Y模拟,Y的长度变为100.
x=qnorm(),p分布由0到1,会出现 -+INF,长度100。
x,y都是由小到大排序,-INF 对应着Y最小,+INF对应着Y最大。
数据长度变为100,plot图时,丢掉最大和最小值。


看了下 qqnorm代码
methods(qqnorm)
qqnorm.default

y数据没有变动。
x利用p=ppoints(length(y)) #提取y长度,进行类似quantile,趋于(0,1)p=(1L:n - a)/(n + 1 - 2 * a)  n=length(y),a=3/8 谁能解释下这个p?什么公式原理?
#   来确定qnorm()中的分布。
y,x 通过x=qnorm(p)[order( order(y))] 排序建立关系。
plot时,y是真实的数据,可以看到x轴标准差的分布情况。
做直线时,倒是利用quantile(y,c(0.25.0.75)和 qnorm(c(0.25,0.75))两点确定直线和 楼主的判断思路一致。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
耕耘使者 + 1 + 1 + 1 鼓励积极发帖讨论

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

报纸
耕耘使者 发表于 2013-11-18 00:10:18
jmpamao 发表于 2013-11-17 23:41
为楼主

和楼主一起学习。
不错,我的做法确实少了两个极端值,但因为数据为大样本,应该并不影响对分布的判断。

地板
耕耘使者 发表于 2013-11-18 00:13:59
jmpamao 发表于 2013-11-17 23:41
为楼主

和楼主一起学习。
“做直线时,倒是利用quantile(y,c(0.25.0.75)和 qnorm(c(0.25,0.75))两点确定直线和 楼主的判断思路一致。”
我认为这是我与R不一样的地方。R是两点确定一条直线,用的是两上四分位点。
我的理解是:如果分布相同,则所有分位点在理论上应该相等,故在截距为0斜率为1的直线上,即y=x线上,这就是红色的参考线。
我感觉从理论上来说我的理解是对的。
谢谢您的参与,问好!
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
jmpamao + 1 + 1 + 1 判断的核心都是 分位点 和 P{X}的关系了

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

7
一拉拉 发表于 2016-5-5 10:06:21
请问做QQ图对数据格式有要求吗?我总是出现下面这种情况是怎么回事呢?
> qqnorm(a)
Error in FUN(X[[1L]], ...) :
  only defined on a data frame with all numeric variables
> qqline(a,col="red")
Error in (1 - h) * qs[i] : non-numeric argument to binary operator

8
一拉拉 发表于 2016-5-5 10:17:59

请问做QQ图对数据格式有要求吗?我总是出现下面这种情况是怎么回事呢?
> qqnorm(a)
Error in FUN(X[[1L]], ...) :
  only defined on a data frame with all numeric variables
> qqline(a,col="red")
Error in (1 - h) * qs[i] : non-numeric argument to binary operator

9
hellen_dn 发表于 2016-9-19 10:29:31
不错,受教了,谢谢

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-10 01:52