我尝试将{sem}包的tsls()函数的估算值嵌入到通过使用“ 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