Заставить nls соответствовать кривой, проходящей через указанную точку

Я пытаюсь приспособить сигмоид Больцмана1/(1+exp((x-p1)/p2)) к этому небольшому экспериментальному набору данных:

xdata <- c(-60,-50,-40,-30,-20,-10,-0,10)
ydata <- c(0.04, 0.09, 0.38, 0.63, 0.79, 1, 0.83, 0.56)

Я знаю, что это довольно просто сделать. Например, используяnls:

fit <-nls(ydata ~ 1/(1+exp((xdata-p1)/p2)),start=list(p1=mean(xdata),p2=-5))

Я получаю следующие результаты:

Formula: ydata ~ 1/(1 + exp((xdata - p1)/p2))

Parameters:
   Estimate Std. Error t value Pr(>|t|)    
p1  -33.671      4.755  -7.081 0.000398 ***
p2  -10.336      4.312  -2.397 0.053490 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.1904 on 6 degrees of freedom

Number of iterations to convergence: 13 
Achieved convergence tolerance: 7.079e-06

Однако янеобходимость (из-за теоретических соображений) подобранная кривая точно проходит через точку(-70, 0), Хотя значение приведенного выше выражения соответствует нулю приx = -70, это не совсем ноль, а это не то, что я хочу.

Итак, вопрос: есть ли способ сказатьnls (или какая-то другая функция), чтобы соответствовать тому же выражению, но заставляя его проходить через указанную точку?

Обновить:

Как уже упоминалось в комментариях, математически невозможно заставить подгонку пройти точку (-70,0), используя предоставленную мной функцию (сигмоид Больцмана). С другой стороны, @Cleb и @BenBolker объяснили, как заставить фитинг пройти любую другую точку, например (-50, 0,09).

Ответы на вопрос(2)

Ваш ответ на вопрос