A first approach (which can be justified asymptotically) could be fitting a nonparametericnonparametric density estimator (KDE, for example) to your data and then sampling from it. I think it is impossible to sample exactly from the same density, unless it is known.
#Your data
x=c(-0.38848247,0.21655804,-1.08211969,0.00369104,0.0993393,0.25531731,
1.40574444,-1.80271115,-0.58780605,-0.35026458,0.67197532,-1.29654652,
-0.58874467,-0.4004176,1.46242829,0.83946654,-0.24861179,-1.604154,
1.53555232,1.45589014,-0.52092604,1.65504054,0.12854317,1.66771236,
1.47964458,-1.55677722,-0.40070632,-0.41957953,0.37803884,0.45349904,
1.18265468,1.43979945,-1.55395031,0.01054229,0.48887945,0.12949194,
-0.40283111,1.2998402,-1.02205575,-0.34370088,0.22117962,0.52840463,
-0.9584811,1.22482249,-1.51189671,0.372597,1.68446854,-0.74440632,
1.33920212,0.18072373,-0.35813474,0.39400846,1.18971633,1.02192759,
-1.90422461,0.18459334,0.18096905,-1.73870267,1.57349896,-1.05632536,
0.1864611,-1.49696658,0.51070568,-2.25007651,-0.64768552,1.80404194,
2.25164576,-0.07925576,-0.83550267,-1.65513631,0.25913869,0.36030077,
-0.09006407,-1.64359237,-0.1312756,-0.13790883,-0.09940115,-0.02089164,
-0.60924589,-0.05451811,2.11736111,-1.40329353,-0.71788744,-0.45888623,
-0.75608368,0.45762458,-0.24299548,-0.29224218,-1.0488731,-0.62028903,
-0.08257067,0.92297771,0.2964071,-0.02598973,-0.20439059,-0.25195469,
0.20572878,-0.49343988,0.25886695,1.20595313)
# sample size
length(x)
# KDE
plot(density(x))
# Sampling from a KDE
samplekde = function(n,data){
resp = vector()
samp = sample(1:length(data),n,rep=T)
h = density(data)$bw
for(i in 1:n) resp[i] = rnorm(1,data[i],h)
return(resp)
}
# Example
x1 = samplekde(100,x)
plot(density(x1))
points(density(x),col="red",type="l")
# qqplot to check how similar x and x1 are
qqplot(x,x1)
Page 5 of this file
http://www.stat.cmu.edu/~cshalizi/350/lectures/28/lecture-28.pdf
The bandwidth parameter used in my code is the one used by default in the R command density()
.