def readData(fileAddress): with open(fileAddress, newline='') as csvfile: data = csv.reader(csvfile, delimiter=',', quotechar='|', quoting=csv.QUOTE_NONNUMERIC) dataList = list(data) ages = dataList[0] heights = dataList[1] if (len(dataList) >= 3): sampleSizes = dataList[2] stdDeviations = dataList[3] return CurveFit.Data(ages, heights, stdDeviations/np.sqrt(sampleSizes), system_error=0.1/np.sqrt(3)) else: return CurveFit.Data(ages, heights, np.array([1.] * len(ages)))
def addRandomError(data, sigma, sampleSize, minAge, maxAge): new_x_arr = [] new_y_arr = [] new_variance_arr = [] for index in range(len(data.x_array)): age = data.x_array[index] if (age >= minAge and age <= maxAge and not age.is_integer()): new_x_arr.append(age) new_y_arr.append( random.gauss(data.y_array[index], sigma / np.sqrt(sampleSize))) new_variance_arr.append(sigma * generateChiSquare(sampleSize - 1) / sampleSize) return CurveFit.Data(new_x_arr, new_y_arr, new_variance_arr / np.sqrt(sampleSize))