无法使用 R 汇总小鼠的平均值:对象 class 数字的无扫视方法
Unable to pool mean values in mice using R: no glance method of object class numeric
我正在尝试使用 R 中的 mice 包来估算连续变量的平均值。我能够生成 m 个估算的平均值,但是当我尝试使用 pool() 函数聚合这些值时,我收到一条错误消息:"Error: No glance method for objects of class numeric"。
我在聚合线性回归模型的结果时能够使用池函数,但不能用于 mean/median 值或分类数据计数。
我试过 iris 数据集和我自己的数据。我将使用虹膜数据来说明问题
library(missForest) # for the prodNA function
library(mice) # for the imputations
#Creating dataset with missing values (NAs)
iris.mis <- prodNA(iris, noNA = 0.1)
head(iris.mis)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 NA 3.0 NA 0.2 <NA>
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 NA 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
#Imputation
imputed_data <- mice(data = iris.mis, m = 5, method = "pmm", maxit = 50, seed = 500)
mean_sepal_width <- with(data = imputed_data, expr = mean(Sepal.Width))
print(mean_sepal_width)
summary(pool(mean_sepal_width))
summary(pool()) 命令给出错误信息:"Error: No glance method for objects of class numeric".
我也尝试过不使用汇总功能,但这也不起作用,即
pool(mean_sepal_width)
此外,我尝试将 mean_sepal_width 对象(属于 class mira 和矩阵)转换为向量,然后找到平均值和中值(与 Rubin 的不完全相同插补规则,但考虑到我的数据集中插补值的相似性以及此处显示的鸢尾花示例,这对于本项目的目的来说是可以接受的)。不幸的是,这也不起作用。例如:
mean(as.vector(mean_sepal_width))
上面还给出了错误信息:“警告信息:
在 mean.default(as.vector(mean_sepal_width)) 中:
参数不是数字或逻辑:返回 NA"
在Whosebug上有一个类似的imer测试问题:
但建议的答案对我也不起作用。
也许在老鼠身上做不到这一点?
对于如何解决此问题的任何建议,我将不胜感激。非常感谢。
对于你的第二种方法,取一个向量的平均值,你可以试试mean(unlist(mean_sepal_width$analyses))
。我不确定使用 pool
的第一种方法是否可以在不拟合模型的情况下工作。
library(pacman)
p_load(mice)
p_load(missForest)
set.seed(12345)
#Creating dataset with missing values (NAs)
iris.mis <- prodNA(iris, noNA = 0.1)
head(iris.mis)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> 1 5.1 3.5 1.4 NA setosa
#> 2 4.9 3.0 1.4 0.2 setosa
#> 3 4.7 3.2 1.3 0.2 setosa
#> 4 4.6 NA 1.5 0.2 setosa
#> 5 5.0 3.6 1.4 0.2 <NA>
#> 6 5.4 3.9 1.7 0.4 setosa
#Imputation
imputed_data <- mice(data = iris.mis, m = 5, method = "pmm", maxit = 50, seed = 500)
mean_sepal_width <- with(data = imputed_data, expr = mean(Sepal.Width))
print(mean_sepal_width)
#> call :
#> with.mids(data = imputed_data, expr = mean(Sepal.Width))
#>
#> call1 :
#> mice(data = iris.mis, m = 5, method = "pmm", maxit = 50, seed = 500)
#>
#> nmis :
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> 20 8 9 21 17
#>
#> analyses :
#> [[1]]
#> [1] 3.059333
#>
#> [[2]]
#> [1] 3.050667
#>
#> [[3]]
#> [1] 3.06
#>
#> [[4]]
#> [1] 3.065333
#>
#> [[5]]
#> [1] 3.052
# look at the structure of the mean_sepal_width object
str(mean_sepal_width)
#> List of 4
#> $ call : language with.mids(data = imputed_data, expr = mean(Sepal.Width))
#> $ call1 : language mice(data = iris.mis, m = 5, method = "pmm", maxit = 50, seed = 500)
#> $ nmis : Named int [1:5] 20 8 9 21 17
#> ..- attr(*, "names")= chr [1:5] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" ...
#> $ analyses:List of 5
#> ..$ : num 3.06
#> ..$ : num 3.05
#> ..$ : num 3.06
#> ..$ : num 3.07
#> ..$ : num 3.05
#> - attr(*, "class")= chr [1:2] "mira" "matrix"
# the estimates are held in "analyses", in a list, so take the mean of these
mean(unlist(mean_sepal_width$analyses))
#> [1] 3.057467
由 reprex package (v0.3.0)
于 2020 年 2 月 10 日创建
我正在尝试使用 R 中的 mice 包来估算连续变量的平均值。我能够生成 m 个估算的平均值,但是当我尝试使用 pool() 函数聚合这些值时,我收到一条错误消息:"Error: No glance method for objects of class numeric"。
我在聚合线性回归模型的结果时能够使用池函数,但不能用于 mean/median 值或分类数据计数。
我试过 iris 数据集和我自己的数据。我将使用虹膜数据来说明问题
library(missForest) # for the prodNA function
library(mice) # for the imputations
#Creating dataset with missing values (NAs)
iris.mis <- prodNA(iris, noNA = 0.1)
head(iris.mis)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 NA 3.0 NA 0.2 <NA>
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 NA 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
#Imputation
imputed_data <- mice(data = iris.mis, m = 5, method = "pmm", maxit = 50, seed = 500)
mean_sepal_width <- with(data = imputed_data, expr = mean(Sepal.Width))
print(mean_sepal_width)
summary(pool(mean_sepal_width))
summary(pool()) 命令给出错误信息:"Error: No glance method for objects of class numeric".
我也尝试过不使用汇总功能,但这也不起作用,即
pool(mean_sepal_width)
此外,我尝试将 mean_sepal_width 对象(属于 class mira 和矩阵)转换为向量,然后找到平均值和中值(与 Rubin 的不完全相同插补规则,但考虑到我的数据集中插补值的相似性以及此处显示的鸢尾花示例,这对于本项目的目的来说是可以接受的)。不幸的是,这也不起作用。例如:
mean(as.vector(mean_sepal_width))
上面还给出了错误信息:“警告信息: 在 mean.default(as.vector(mean_sepal_width)) 中: 参数不是数字或逻辑:返回 NA"
在Whosebug上有一个类似的imer测试问题:
也许在老鼠身上做不到这一点?
对于如何解决此问题的任何建议,我将不胜感激。非常感谢。
对于你的第二种方法,取一个向量的平均值,你可以试试mean(unlist(mean_sepal_width$analyses))
。我不确定使用 pool
的第一种方法是否可以在不拟合模型的情况下工作。
library(pacman)
p_load(mice)
p_load(missForest)
set.seed(12345)
#Creating dataset with missing values (NAs)
iris.mis <- prodNA(iris, noNA = 0.1)
head(iris.mis)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> 1 5.1 3.5 1.4 NA setosa
#> 2 4.9 3.0 1.4 0.2 setosa
#> 3 4.7 3.2 1.3 0.2 setosa
#> 4 4.6 NA 1.5 0.2 setosa
#> 5 5.0 3.6 1.4 0.2 <NA>
#> 6 5.4 3.9 1.7 0.4 setosa
#Imputation
imputed_data <- mice(data = iris.mis, m = 5, method = "pmm", maxit = 50, seed = 500)
mean_sepal_width <- with(data = imputed_data, expr = mean(Sepal.Width))
print(mean_sepal_width)
#> call :
#> with.mids(data = imputed_data, expr = mean(Sepal.Width))
#>
#> call1 :
#> mice(data = iris.mis, m = 5, method = "pmm", maxit = 50, seed = 500)
#>
#> nmis :
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> 20 8 9 21 17
#>
#> analyses :
#> [[1]]
#> [1] 3.059333
#>
#> [[2]]
#> [1] 3.050667
#>
#> [[3]]
#> [1] 3.06
#>
#> [[4]]
#> [1] 3.065333
#>
#> [[5]]
#> [1] 3.052
# look at the structure of the mean_sepal_width object
str(mean_sepal_width)
#> List of 4
#> $ call : language with.mids(data = imputed_data, expr = mean(Sepal.Width))
#> $ call1 : language mice(data = iris.mis, m = 5, method = "pmm", maxit = 50, seed = 500)
#> $ nmis : Named int [1:5] 20 8 9 21 17
#> ..- attr(*, "names")= chr [1:5] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" ...
#> $ analyses:List of 5
#> ..$ : num 3.06
#> ..$ : num 3.05
#> ..$ : num 3.06
#> ..$ : num 3.07
#> ..$ : num 3.05
#> - attr(*, "class")= chr [1:2] "mira" "matrix"
# the estimates are held in "analyses", in a list, so take the mean of these
mean(unlist(mean_sepal_width$analyses))
#> [1] 3.057467
由 reprex package (v0.3.0)
于 2020 年 2 月 10 日创建