Я пытался встроить оценку с помощью функции 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