Gavin Simpson'un stats:::simulate.lm
'u değiştirmeye yönelik önerisi uygun olanıdır. çalışır, ancak bu (muhtemelen daha iyi ve) bir temizleyici
## Modify stats:::simulate.lm by inserting some tracing code immediately
## following the line that reads "ftd <- fitted(object)"
trace(what = stats:::simulate.lm,
tracer = quote(ftd <- list(...)[["XX"]]),
at = list(5))
## Prepare the data and 'fit' object
df <- data.frame(x=x<-1:10, y=1.5*x + rnorm(length(x)))
fit <- lm(y ~ x, data = df)
newX <- 8:1
## Pass in new x-values via the argument 'XX'
simulate(fit, nsim = 4, XX = newX)
# sim_1 sim_2 sim_3 sim_4
# 1 8.047710 8.647585 7.9798728 8.400672
# 2 6.398029 7.714972 7.9713929 7.813381
# 3 5.469346 5.626544 4.8691962 5.282176
# 4 4.689371 4.310656 4.2029540 5.257732
# 5 4.628518 4.467887 3.6893648 4.018744
# 6 2.724857 4.280262 2.8902676 4.347371
# 7 1.532617 2.400321 2.4991168 3.357327
# 8 1.300993 1.379705 0.1740421 1.549881
yaklaşım: En Q
## A function for simulating at new x-values
simulateX <- function(object, nsim=1, seed=NULL, X, ...) {
object$fitted.values <- X
simulate(object=object, nsim=nsim, seed=seed, ...)
}
## Prepare a fit object and some new x-values
df <- data.frame(x=x<-1:10, y=1.5*x + rnorm(length(x)))
fit <- lm(y ~ x, data = df)
newX <- 8:1
## Try it out
simulateX(fit, nsim = 4, X = newX)
# sim_1 sim_2 sim_3 sim_4
# 1 8.828988 6.890874 7.397280 8.1605794
# 2 6.162839 8.174032 3.612395 7.7999466
# 3 5.861858 6.351116 3.448205 4.3721326
# 4 5.298132 4.448778 2.006416 5.7637724
# 5 7.260219 4.015543 3.063622 4.2845775
# 6 3.107047 4.859839 6.202650 -1.0956775
# 7 1.501132 1.086691 -1.273628 0.4926548
# 8 1.197866 1.573567 2.137449 0.9694006
son satır beni karıştı sahiptir. 'x' sabittir; Yeni 'x' verileri için' y' (yanıtı) simüle etmek mi demek istiyorsun? –
Üzgünüz, Gavin, haklısın. Yanıtların simüle edileceğini söylemeliyim. Bu düzenlenmiştir. – PirateGrunt
Tamam, Yani 'simulate' 'e bakabilirdiniz, ancak bu sadece x' akımı için çalışır. Fakat ('simulate.lm()') 'i,' newdata = newX' ile güncelleştirilmiş çağrı yerine '' newdata = newX' ile model nesnesinde 'predict()' 'i çağırmak için ('simulate.lm()') değiştirebilir ve ardından normal kod. "Ağırlıklar" varsayımı, bu durumun karmaşık hale geleceği için kullanılmadı ... –