Функция tsls () в пакете {sem} в R не работает в пользовательских функциях - PullRequest
0 голосов
/ 14 мая 2019

Я пытался встроить оценку с помощью функции tsls () из пакета {sem} в функцию, которую я определил с помощью «function () {}», но tsls () не работает, как я ожидал. (Тот же номер повторяется.) Пожалуйста, посмотрите пример кода и результаты ниже. Я тоже попробовал некоторые другие пользовательские функции, но произошло то же самое.

library(sem)

set.seed(1)
X <- rnorm(n=100, mean=0, sd=3)
Y <- rnorm(n=100, mean=1, sd=4)
Z <- rnorm(n=100, mean=2, sd=5)
tsls(Y ~ X, ~Z)$coefficients[1]
# output:
(Intercept) 
    2.10047 

.

set.seed(2)
X <- rnorm(n=100, mean=0, sd=3)
Y <- rnorm(n=100, mean=1, sd=4)
Z <- rnorm(n=100, mean=2, sd=5)
tsls(Y ~ X, ~Z)$coefficients[1]
# output:
(Intercept) 
   1.213307 

.

set.seed(3)
X <- rnorm(n=100, mean=0, sd=3)
Y <- rnorm(n=100, mean=1, sd=4)
Z <- rnorm(n=100, mean=2, sd=5)
tsls(Y ~ X, ~Z)$coefficients[1]
# output:
(Intercept) 
   1.036149 

.

semtsls <- function(n){
  for (i in 1:n){
    set.seed(i)
    X <- rnorm(n=100, mean=0, sd=3)
    Y <- rnorm(n=100, mean=1, sd=4)
    Z <- rnorm(n=100, mean=2, sd=5)
    print(tsls(Y ~ X, ~Z)$coefficients[1])
  }
}

.

> semtsls(3)
(Intercept) 
   1.036149 
(Intercept) 
   1.036149 
(Intercept) 
   1.036149 
> semtsls(5)
(Intercept) 
   1.036149 
(Intercept) 
   1.036149 
(Intercept) 
   1.036149 
(Intercept) 
   1.036149 
(Intercept) 
   1.036149
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...