<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _initial_proposal_distribution(self, parameters, theta, size, default_std=1e-4):
 """ Generate an initial proposal distribution around the point theta. """


        missing_parameters = set(parameters).difference(theta)
        if missing_parameters:
            raise ValueError("cannot create initial proposal distribution "\
                "because the following parameters are missing: {}".format(
                    ", ".join(missing_parameters)))

        std = np.ones(len(parameters), dtype=float)
        
        initial_proposal_stds \
            = self._configuration.get("initial_proposal_stds", {})

        p0 = np.array([theta[p] for p in parameters])
        std = np.array(map(float, [initial_proposal_stds.get(p, default_std) \
            for p in parameters]))

        return np.vstack([p0 + std * np.random.normal(size=len(p0)) \
            for i in range(size)])