Ошибка в коде состоит в том, что ваш fd(x)
вызов функции возвращает список. Это, как говорит ошибка, не числовой.
У нас нет информации о том, каким должно быть f (d) (это не определено на рисунке или в вопросе), но кажется, что решение состоит в том, чтобы извлечь любой компонент из fd(x)
, который вы хотели вычесть из Mean
.
Например:
for (d in (1:20)){
W=(Mean-fd(x)$fitted.values)**2
d2=sum(W)/1000
}
Обновление
Я видел ваш комментарий / вопрос по поводу "D3" из уравнений на картинке. Я немного не уверен, потому что у меня нет учебника / контекста, чтобы быть уверенным в нотации (X не определен формально, и мне также пришлось поверить, что Y на рисунке = Mean
в код, основанный на том, как вы его использовали). Это мое лучшее предположение, исходя из этого контекста:
# The equation for d3 is the expected value of (Y-fd(X))^2.
#
# I don't know the context of this, but I see the definition of d1 and d2.
#
# D1 = for(i in (1:20)) {
# d1<- (1/1000)*sum((y-ajust[i,])**2)
# }
d1 # [1] 10.04203
#
# D2 = for (d in (1:20)){
# W=(Mean-fd(x)$fitted.values)**2
# d2=sum(W)/1000
# }
#
d2 # [1] 0.2024568
#
# Based on that, Y = Mean, y = y, x=x, i=i, N=1000
# W = (Y - fd(xi))^2
# I presume X = vectorized xi
#
# So, D3 =
D3 = (Mean - fd(x)$fitted.values)^2
#Since it's an expected value, I presume we take the mean
D3 = mean(D3)
Там, где я могу ошибаться, вероятно, X. X в изображенном уравнении выглядит как вектор всех x
[i]. Но каждый элемент x
является x
[i], поэтому x
уже является его векторным представлением.