Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .translate/state/rand_resp.md.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
source-sha: d39b85fc089f59575047b7fc4a04a7561785c9ce
synced-at: "2026-07-18"
model: claude-sonnet-5
mode: RESYNC
section-count: 4
tool-version: 0.17.0
23 changes: 14 additions & 9 deletions lectures/rand_resp.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@ kernelspec:
display_name: Python 3
language: python
name: python3
translation:
title: 随机化回应调查
headings:
Overview: 概述
Warner's Strategy: Warner的策略
Comparing Two Survey Designs: 比较两种调查设计
Concluding Remarks: 结束语
---

# 随机化回应调查
Expand Down Expand Up @@ -50,6 +57,7 @@ import pandas as pd

Warner {cite}`warner1965randomized` 提出并分析了以下程序:

- 从人群中有放回地抽取 $n$ 个随机样本,并对每个人进行访谈。
- 从人群中有放回地抽取 $n$ 个随机样本,并对每个人进行访谈。
- 准备一个**随机转盘**,该转盘指向字母 A 的概率为 $p$,指向字母 B 的概率为 $(1-p)$。
Comment on lines +60 to 62
- 每个受试者转动随机转盘,看到一个访谈者**看不到**的结果(A 或 B)。
Expand Down Expand Up @@ -88,7 +96,6 @@ $$

$$

\pi p + (1-\pi)(1-p)=\frac{n_1}{n}
$$ (eq:3)

Expand Down Expand Up @@ -175,12 +182,11 @@ $$ (eq:ten)

$$
\begin{aligned}

Var(\hat{\pi})&=\frac{ \left[ \pi T_a + (1-\pi)(1-T_b)\right] \left[1- \pi T_a -(1-\pi)(1-T_b)\right] }{n}
\end{aligned}
$$ (eq:eleven)

定义一个
定义如下量是有用的:

$$
\text{MSE 比率}=\frac{\text{随机化的均方误差}}{\text{常规的均方误差}}
Expand Down Expand Up @@ -221,9 +227,9 @@ class Comparison:
A = self.A
n = self.n
df = self.template.copy()
np.random.seed(seed)
sample = np.random.rand(size, self.n) <= A
random_device = np.random.rand(size, n)
rng = np.random.default_rng(seed)
sample = rng.random((size, self.n)) <= A
random_device = rng.random((size, n))
mse_rd = {}
for p in self.p_arr:
spinner = random_device <= p
Expand All @@ -232,8 +238,8 @@ class Comparison:
pi_hat = (p - 1) / (2 * p - 1) + n1 / n / (2 * p - 1)
mse_rd[p] = np.sum((pi_hat - A)**2)
for inum, irow in df.iterrows():
truth_a = np.random.rand(size, self.n) <= irow.T_a
truth_b = np.random.rand(size, self.n) <= irow.T_b
truth_a = rng.random((size, self.n)) <= irow.T_a
truth_b = rng.random((size, self.n)) <= irow.T_b
trad_answer = sample * truth_a + (1 - sample) * (1 - truth_b)
pi_trad = trad_answer.sum(axis=1) / n
df.loc[inum, 'Bias'] = pi_trad.mean() - A
Expand Down Expand Up @@ -315,4 +321,3 @@ df3_mc
{doc}`这个QuantEcon讲座<util_rand_resp>`描述了一些其他的随机化回应调查方法。

该讲座介绍了Lars Ljungqvist {cite}`ljungqvist1993unified`对这些替代方案进行的功利主义分析。

Loading