方差模型分析中的泊松残差检验
Test for Poisson residuals in the analysis of variance model
我试图在 aov()
中找到像法线一样测试泊松残差的任何方法。在我假设的例子中:
# For normal distribution
x <- rep(seq(from=10, to=50, by=0.5),6)
y1 <- rnorm(length(x), mean=10, sd=1.5)
#Normality test in aov residuals
y1.av<-aov(y1 ~ x)
shapiro.test(y1.av$res)
# Shapiro-Wilk normality test
#
#data: y1.av$res
#W = 0.99782, p-value = 0.7885
听起来很傻,好吧!!
现在,我想对泊松分布做同样的处理:
# For Poisson distribution
x <- rep(seq(from=10, to=50, by=0.5),6)
y2 <- rpois(x, lambda=10)
#Normality test in aov residuals
y2.av<-aov(y2 ~ x)
poisson.test(y2.av$res)
Error in poisson.test(y2.av$res) :
'x' must be finite, nonnegative, and integer
有什么统计方法可以做到这一点?
谢谢!
您可以在计数环境下分析您的数据。离散数据,例如泊松性质的变量,可以根据观察到的频率进行分析。您可以为此任务制定假设检验。作为您的数据 y
,您可以将 y
服从具有某些参数 lambda 的泊松分布的零假设与 y
不来自泊松分布的备择假设进行对比。让我们用你的数据画出测试图:
#Data
set.seed(123)
# For Poisson distribution
x <- rep(seq(from=10, to=50, by=0.5),6)
y2 <- rpois(x, lambda=10)
现在我们获得了测试的基本计数:
#Values
df <- as.data.frame(table(y2),stringsAsFactors = F)
df$y2 <- as.integer(df$y2)
之后我们必须将观测值 O
与其组或类别 classes
分开。两个元素构成 y
变量:
#Observed values
O <- df$Freq
#Groups
classes <- df$y2
由于我们正在测试泊松分布,因此我们必须计算 lambda 参数。这可以通过最大似然估计 (MLE) 获得。 Poisson 的 MLE 是均值(考虑到我们有计数和组来确定这个值),所以我们用下一个代码计算它:
#MLE
meanval <- sum(O*classes)/sum(O)
现在,我们必须得到每个 class:
的概率
#Probs
prob <- dpois(classes,meanval)
泊松分布可以达到无穷大的值,因此我们必须计算可以大于我们最后一组的值的概率,以便概率总和为一:
prhs <- 1-sum(prob)
这个概率可以很容易地添加到我们组的最后一个值,以便转换以考虑大于或等于它的值(例如,而不是只有 y
等于 20 的概率我们可以得到 y
大于或等于 20 的概率):
#Add probability
prob[length(prob)]<-prob[length(prob)]+prhs
有了这个,我们可以使用 R
中的 chisq.test()
函数进行拟合优度检验。它需要观测值 O
和我们计算的概率 prob
。提醒一下,此测试用于设置错误的自由度,因此我们可以通过使用 k-q-1
度的测试公式来纠正它。其中 k
是组数,q
是计算的参数数(我们用 MLE 计算了一个参数)。接下来测试:
chisq.test(O,p=prob)
输出:
Chi-squared test for given probabilities
data: O
X-squared = 7.6692, df = 17, p-value = 0.9731
测试的关键值是 X-squared
值,它是测试统计量。我们可以复用这个值得到真正的p-value
(在我们的例子中,我们有k=18
和负2,自由度是16)。
p.value
可以通过下一个代码得到:
p.value <- 1-pchisq(7.6692, 16)
输出:
[1] 0.9581098
由于该值不大于已知的显着性水平,我们不拒绝原假设,我们可以肯定 y
来自泊松分布。
我试图在 aov()
中找到像法线一样测试泊松残差的任何方法。在我假设的例子中:
# For normal distribution
x <- rep(seq(from=10, to=50, by=0.5),6)
y1 <- rnorm(length(x), mean=10, sd=1.5)
#Normality test in aov residuals
y1.av<-aov(y1 ~ x)
shapiro.test(y1.av$res)
# Shapiro-Wilk normality test
#
#data: y1.av$res
#W = 0.99782, p-value = 0.7885
听起来很傻,好吧!!
现在,我想对泊松分布做同样的处理:
# For Poisson distribution
x <- rep(seq(from=10, to=50, by=0.5),6)
y2 <- rpois(x, lambda=10)
#Normality test in aov residuals
y2.av<-aov(y2 ~ x)
poisson.test(y2.av$res)
Error in poisson.test(y2.av$res) :
'x' must be finite, nonnegative, and integer
有什么统计方法可以做到这一点?
谢谢!
您可以在计数环境下分析您的数据。离散数据,例如泊松性质的变量,可以根据观察到的频率进行分析。您可以为此任务制定假设检验。作为您的数据 y
,您可以将 y
服从具有某些参数 lambda 的泊松分布的零假设与 y
不来自泊松分布的备择假设进行对比。让我们用你的数据画出测试图:
#Data
set.seed(123)
# For Poisson distribution
x <- rep(seq(from=10, to=50, by=0.5),6)
y2 <- rpois(x, lambda=10)
现在我们获得了测试的基本计数:
#Values
df <- as.data.frame(table(y2),stringsAsFactors = F)
df$y2 <- as.integer(df$y2)
之后我们必须将观测值 O
与其组或类别 classes
分开。两个元素构成 y
变量:
#Observed values
O <- df$Freq
#Groups
classes <- df$y2
由于我们正在测试泊松分布,因此我们必须计算 lambda 参数。这可以通过最大似然估计 (MLE) 获得。 Poisson 的 MLE 是均值(考虑到我们有计数和组来确定这个值),所以我们用下一个代码计算它:
#MLE
meanval <- sum(O*classes)/sum(O)
现在,我们必须得到每个 class:
的概率#Probs
prob <- dpois(classes,meanval)
泊松分布可以达到无穷大的值,因此我们必须计算可以大于我们最后一组的值的概率,以便概率总和为一:
prhs <- 1-sum(prob)
这个概率可以很容易地添加到我们组的最后一个值,以便转换以考虑大于或等于它的值(例如,而不是只有 y
等于 20 的概率我们可以得到 y
大于或等于 20 的概率):
#Add probability
prob[length(prob)]<-prob[length(prob)]+prhs
有了这个,我们可以使用 R
中的 chisq.test()
函数进行拟合优度检验。它需要观测值 O
和我们计算的概率 prob
。提醒一下,此测试用于设置错误的自由度,因此我们可以通过使用 k-q-1
度的测试公式来纠正它。其中 k
是组数,q
是计算的参数数(我们用 MLE 计算了一个参数)。接下来测试:
chisq.test(O,p=prob)
输出:
Chi-squared test for given probabilities
data: O
X-squared = 7.6692, df = 17, p-value = 0.9731
测试的关键值是 X-squared
值,它是测试统计量。我们可以复用这个值得到真正的p-value
(在我们的例子中,我们有k=18
和负2,自由度是16)。
p.value
可以通过下一个代码得到:
p.value <- 1-pchisq(7.6692, 16)
输出:
[1] 0.9581098
由于该值不大于已知的显着性水平,我们不拒绝原假设,我们可以肯定 y
来自泊松分布。