运行如下R代码:
library(tidyverse)
as_tibble(mtcars)
# Create function to calculate OLS log-likelihood
ll_ols <- function(params, data, y_var, x_vars) {
# Add column of ones for the constant term
reg_data <- data %>%
mutate(constant = 1)
# Select data for X and convert to a matrix
X <- reg_data %>%
select(all_of(c('constant', x_vars))) %>%
as.matrix()
# Select data for y and convert to a matrix
y <- reg_data %>%
select(all_of(y_var)) %>%
as.matrix()
# Select coefficient parameters
beta_hat <- params[-length(params)]
# Select error variance parameters
sigma2_hat <- params[length(params)]
# Calculate fitted y values
y_hat <- X %*% beta_hat
# Calculate the pdf values of each outcome
y_pdf <- dnorm(y, mean = y_hat, sd = sqrt(sigma2_hat))
# Calculate the log-likelihood
ll <- sum(log(y_pdf))
# Return the negative of log-likelihood for minimization
return(-ll)
}
# Maximize the OLS log-likelihood function
mle_ols_1 <- optim(par = c(0, 0, 1), fn = ll_ols,
data = mtcars, y_var = 'mpg', x_vars = 'hp',
method = 'BFGS', hessian = TRUE)
运行到这里会出现报错: Error in eval(expr, envir, enclos) : 没有"all_of"这个函数。
请问是什么原因,该如何改正呀?
在tidyverse_1.3.1,tidyselect_1.1.2的环境下,运行没有问题,检查一下是不是版本问题。
$par
[1] 30.09908613 -0.06822967 13.99015277
$value
[1] 87.61931
$counts
function gradient
84 28
...