R语言 卡方分布
自由度为df的卡方分布是对df独立标准正态随机变量的平方之和计算的分布。这个分布用于数据的分类分析。
让我们考虑X1 , X2 , …, Xm 是具有标准正态分布的m个独立随机变量,那么遵循具有m个自由度的Chi-Squared分布的数量可以被评估为如下。这个分布的平均值为m,其方差分别相当于2*m。
公式
qchisq()函数
qchisq给出了量化函数。当我们提供ncp=0的值时,就会使用非中心分布的算法。这种方法的值相当于x在第q个百分点的值(lower.tail = TRUE)。
语法
qchisq(p, df, ncp = 0, lower.tail = TRUE, log.p = FALSE)
参数:
- p – 概率的向量
- df – 自由度
- ncp – 非中心性参数(非负数)。
- log.p – 逻辑的;如果是TRUE,概率p以log(p)形式给出。
- lower.tail – 逻辑;如果是TRUE(默认),概率为P[X≤x],否则为P[X>x]。
例子
# defining the degrees of freedom
free = 5
qchisq(.75, df=free)
输出
[1] 6.62568
这个函数也可以用来计算给定的曲线下面积的量化指标。
例子
# defining the degrees of freedom
free = 5
qchisq(.999, df=free, lower.tail = TRUE)
输出
[1] 20.51501
dchisq()函数
dchisq给出了密度函数。也就是说,它用于计算小于或等于量纲向量值的累积概率(左尾为 lower.tail = TRUE,右尾为 lower.tail = FALSE),也就是q。
语法
dchisq(x, df, ncp = 0, log = FALSE)
参数:
- x – 量值向量
- df – 自由度
- ncp – 非中心性参数(非负数)。
- log.p – 逻辑;如果为真,概率p以log(p)形式给出。
例子
# defining degrees of freedom
df = 6
vec <- 1:4
print ("Density function values")
dchisq(vec, df = df)
输出
[1] “Density function values”
[1] 0.03790817 0.09196986 0.12551072 0.13533528
pchisq()函数
pchisq给出了分布函数。 dchisq(x, df)给我们提供了自由度为df时相当于x值的χ2的概率。该方法可用于计算给定自由度的χ2曲线的指定区间的曲线下面积。
语法
pchisq(q, df, ncp = 0, lower.tail = TRUE, log.p = FALSE)
参数:
- q – 量值的向量
- df – 自由度
- ncp – 非中心性参数(非负数)。
- log.p – 逻辑的;如果是TRUE,概率p以log(p)的形式给出。
- lower.tail – 逻辑;如果是TRUE(默认),概率为P[X≤x],否则为P[X>x]。
例子
# defining degrees of freedom
df = 5
# calculating for the values in the interval [0,5]
print ("Calculating for the values [0,5]")
pchisq(5, df = df,lower.tail = TRUE)
# calculating for the values in the interval [5,inf)
print ("Calculating for the values [5,inf)")
pchisq(5, df = df,lower.tail = FALSE)
输出
[1] “Calculating for the values [0,5]”
[1] 0.5841198
[1] “Calculating for the values [5,inf)”
[1] 0.4158802
在[0,5]和[5,∞]两个区间下的曲线之和等于1。
rchisq()函数
rchisq(n, df)返回来自chi-square分布的n个随机数。因此,它是用来生成随机偏差的。
语法
rchisq(n, df, ncp = 0)
参数:
- n – 观察值的数量。如果length(n)>1,则该长度被认为是所需的数量。
- df – 自由度(非负数,但可以是非整数)。
- ncp – 非中心性参数(非负数)。
例子
# computing values of 50k random values with 5 degrees of freedom
x <- rchisq(50000, df = 5)
hist(x,
freq = FALSE,
xlim = c(0,16),
ylim = c(0,0.2))
curve(dchisq(x, df = 5), from = 0, to = 15,
n = 5000, col= 'red', lwd=2, add = T)
输出