mydata <- read.csv("Titration Trial 1.csv", header = TRUE, )
mydata
##    Volume.of.NaOH..ml.    pH  X
## 1                 0.00  3.17 NA
## 2                 1.00  3.47 NA
## 3                 2.00  3.47 NA
## 4                 3.00  3.90 NA
## 5                 4.00  4.06 NA
## 6                 5.00  4.18 NA
## 7                 6.00  4.27 NA
## 8                 7.00  4.37 NA
## 9                 8.00  4.47 NA
## 10                8.45  4.49 NA
## 11                9.00  4.54 NA
## 12                9.60  4.61 NA
## 13               10.00  4.64 NA
## 14               11.00  4.71 NA
## 15               12.00  4.80 NA
## 16               13.00  4.88 NA
## 17               14.00  4.97 NA
## 18               14.50  5.03 NA
## 19               14.90  5.06 NA
## 20               15.10  5.08 NA
## 21               15.20  5.08 NA
## 22               15.60  5.12 NA
## 23               16.10  5.19 NA
## 24               16.60  5.25 NA
## 25               17.00  5.32 NA
## 26               17.50  5.40 NA
## 27               18.10  5.50 NA
## 28               18.50  5.59 NA
## 29               19.10  5.74 NA
## 30               19.50  5.86 NA
## 31               20.00  6.39 NA
## 32               21.10  9.55 NA
## 33               21.50 10.51 NA
## 34               22.00 10.89 NA
## 35               25.00 11.50 NA
#  data(package = .packages(all.available = TRUE))

volume<-mydata$Vol ## volume vector

pH<-mydata$pH ## pH vector

plot(volume,pH, xlab= "Volume (mL)", ylab= "pH", main= "Titration", xlim=c(0,25),ylim=c(3,12))

OH<-0.1 ## [Base]
OH
## [1] 0.1
Veq<-21.5
Veq
## [1] 21.5
H <- 10^(-pH) 
H
##  [1] 6.760830e-04 3.388442e-04 3.388442e-04 1.258925e-04 8.709636e-05
##  [6] 6.606934e-05 5.370318e-05 4.265795e-05 3.388442e-05 3.235937e-05
## [11] 2.884032e-05 2.454709e-05 2.290868e-05 1.949845e-05 1.584893e-05
## [16] 1.318257e-05 1.071519e-05 9.332543e-06 8.709636e-06 8.317638e-06
## [21] 8.317638e-06 7.585776e-06 6.456542e-06 5.623413e-06 4.786301e-06
## [26] 3.981072e-06 3.162278e-06 2.570396e-06 1.819701e-06 1.380384e-06
## [31] 4.073803e-07 2.818383e-10 3.090295e-11 1.288250e-11 3.162278e-12
Vi<-25 ## Initial volume
Vi
## [1] 25
fb<-1-(OH*volume+H*(Vi+volume))/(OH*Veq)
fb
##  [1]  9.921386e-01  9.493907e-01  9.027215e-01  8.588256e-01  8.127787e-01
##  [6]  7.665200e-01  7.201559e-01  6.737837e-01  6.273869e-01  6.064733e-01
## [11]  5.809393e-01  5.530933e-01  5.345108e-01  4.880456e-01  4.415877e-01
## [16]  3.951158e-01  3.486428e-01  3.254099e-01  3.068151e-01  2.975193e-01
## [21]  2.928677e-01  2.742754e-01  2.510394e-01  2.277982e-01  2.092088e-01
## [26]  1.859678e-01  1.580761e-01  1.394829e-01  1.115906e-01  9.299469e-02
## [31]  6.975892e-02  1.860465e-02 -6.683663e-10 -2.325581e-02 -1.627907e-01
plot(pH,fb,main="Fraction Bound vs pH",xlab = "pH",xlim = c(3,7.11),ylab = "Fraction Bound")
tryfit <- nls(fb ~ H/(Kd+H), start=c(Kd = 0.0001))
summary(tryfit)
## 
## Formula: fb ~ H/(Kd + H)
## 
## Parameters:
##     Estimate Std. Error t value Pr(>|t|)    
## Kd 1.983e-05  6.310e-07   31.43   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.03253 on 34 degrees of freedom
## 
## Number of iterations to convergence: 6 
## Achieved convergence tolerance: 3.333e-07
lines(pH, predict(tryfit), col="hotpink")