如何解决如何在r中编写以下公式?
我需要在R中编写以下公式。STAT公式是oneway.test
函数的复制效果。
其中样本方差是
和
变量为:m
-样本数量,n
-样本大小,向量sample_means
-每个样本的平均值,向量sample_vars
-每个样本的样本方差
我正在尝试使用以下代码,但是当我将其与aov
进行比较时,它没有给出正确的结果:
my_anova <- function(m,n,sample_means,sample_vars) {
overall_mean <- mean(sample_means)
sample_vars <- sum((sample_means - overall_mean)^2)/(m-1)
STAT <- (n*sample_vars)/(sum(sample_vars/m))
PVAL <- pf(STAT,m - 1,m*(n - 1),lower.tail = FALSE)
}
解决方法
不太确定您从哪里获得了上述公式,但是从我的搜集中,您希望获得单因素方差分析的F统计量和p值。 n应该是自由度,而不是样本量。尝试使用此table:
因此,底线是SSF应该始终是预测均值和总体均值之间的残差之和,而SSE是预测均值和实际值之间的残差之和。然后,您除以相应的自由度。如下所示:
my_aov <- function(sample_values,sample_means,n){
overall_mean = mean(sample_values)
SSF = sum((sample_means - overall_mean)^2)
SSE = sum((sample_values - sample_means)^2)
DoF = c(n,length(sample_values)-1-n)
Mean_Square = c(SSF/DoF[1],SSE/DoF[2])
FSTAT = c(Mean_Square[1]/Mean_Square[2],NA)
PVAL <- pf(FSTAT,DoF[1],DoF[2],lower.tail = FALSE)
cbind(Sum_of_Squares= c(SSF,SSE),DoF,Mean_Square,FSTAT,PVAL)
}
使用示例:
values = iris$Sepal.Length
Species_values = tapply(iris$Sepal.Length,iris$Species,mean)
predicted_values = Species_values[as.character(iris$Species)]
# since there are 3 groups,degree of freedom is 3-1
n = length(unique(iris$Species)) - 1
my_aov(values,predicted_values,n)
Sum_of_Squares DoF Mean_Square FSTAT PVAL
[1,] 63.21213 2 31.6060667 119.2645 1.669669e-31
[2,] 38.95620 147 0.2650082 NA NA
比较:
summary(aov(Sepal.Length ~ Species,data=iris))
Df Sum Sq Mean Sq F value Pr(>F)
Species 2 63.21 31.606 119.3 <2e-16 ***
Residuals 147 38.96 0.265
---
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。