У меня проблема с использованием функции kclass() пакета RCompAngrist, когда у меня отсутствуют значения в моем файле df. Это функция, которая должна вычислять оценку «максимального правдоподобия с ограниченной информацией» с зависимой переменной в левой части и двумя частями в правой части уравнения. Первый для эндогенных переменных и второй для инструментов. Он основан на функции ivreg() пакета AER. Ниже приведен минимальный рабочий пример, который будет воспроизводить ошибку.
library(magrittr)
library(devtools)
install_github(repo = "RCompAngrist",
username = "MatthieuStigler",
subdir = "RcompAngrist")
library(RcompAngrist)
a <- runif(10, 5, 90)
b <- runif(10, 4, 10)
c <- runif(10, 0, 1)
d <- runif(10, 5, 65)
e <- runif(10, 1, 2)
f <- runif(10, 1, 100)
g <- runif(10, 80, 90)
h <- c(1,12,3,5,NA,16,17,NA,9,10)
dummy <- kclass(a ~ b + c + d | d + e + f + g + h,
model = T,
data=df)
Если вы запустите этот код, вы должны получить это сообщение об ошибке от R:
Ошибка в cbind(x_exo, z, x_endo, y): число строк матриц должно совпадать (см. аргумент 2)
Это связано с NA во фрейме данных, но я не могу понять, что именно идет не так. Это работает, если вы создаете переменную «h» без NA. Однако, если вы опустите NA через
df <- data.frame(a,b,c,d,e,f,g,h) %>% na.omit()
прежде чем вы переоцените модель, R выдает мне это сообщение об ошибке:
Ошибка в R_Z[c(n_G, n_y), c(n_G, n_y)] : нижний индекс выходит за пределы
Я также не понимаю, почему он не опускает NA сам по себе, поскольку глобальная опция для na.action — na.omit. Хотя бывает еще страннее. Если вы удалите «data=df» из функции, а затем повторно запустите модель, сообщение об ошибке вернется к
Ошибка в cbind [...]
Почему здесь какая-то разница, есть ли в коде «data=df» или нет? У кого-нибудь есть идеи, где может быть проблема? Я вообще не понимаю, что здесь происходит.