书里这一步是下载 R、一路下一步、打开输入 1+1 看有没有 [1] 2。 这台机器上没有 R,装也装不了,所以安装过程原样贴出来,标「平台不执行」。 但 R 干的那几件事(平均、标准偏差、拟合)这里全部真算,结果一一对上。
附录 B 只有一节:装 R。它属于「环境准备」,不是分析方法。 这一篇的重点不在安装,而在「同一件事换个工具怎么写」的对照。
一、装 R 的五个动作
打开 cran.r-project.org,选 Download R for Windows,点 base,下载安装包,一路下一步。 装完打开 R,输入 1+1 回车,出现 [1] 2 就算成功。 那个 [1] 是「这是输出的第 1 个元素」的意思,不是行号,也不是结果的一部分。
第一次见这个 [1] 的人几乎都会困惑一下。它只是 R 打印向量的格式。
这台机器上没有 R,Rscript 不存在,所以这一段只能原样贴,跑不了。
二、R 到底舒服在哪
三件事:向量化、图形、建模接口。 向量化:c(1,2,3) 直接当一列算,mean(c(1,2,3)) 一行出结果,不用写循环。 图形:hist(x)、plot(x, y) 一行出图,默认样式就能看。
建模:lm(y ~ x) 一行出模型,summary 直接给系数、标准误、r²。 这三件事 Python 都能做,只是写法长一点。差别在顺手程度,不在能力。
三、一张对照表
| 要做的事 | R 里怎么写 | 这里怎么写 |
|---|---|---|
| 造一列数 | c(1, 2, 3) | [1, 2, 3] |
| 求平均 | mean(x) | sum(x) / len(x) |
| 标准偏差 | sd(x) | statistics.stdev(x) |
| 画直方图 | hist(x) | matplotlib 的 ax.hist |
| 拟合直线 | lm(y ~ x) | numpy 的 polyfit |
| 取残差 | resid(m) | 实际值减预测值 |
六行里没有一行是「R 独有的能力」。 R 赢在生态和默认输出,不赢在算法。这句话想清楚,就不会纠结「该学哪个」。
四、要不要专门去装
要做正经统计建模、要现成的检验与诊断图、要交一份同行看得懂的脚本——装。 只是偶尔算平均、画柱状图——不必。 工具的重量要和任务的重量匹配。为了一次求平均去装一个统计环境,是划不来的。
学工具的顺序应该是:先知道要算什么,再挑工具。反过来会学一堆用不上的语法。
五、书里这一步为什么现在显得旧
这本书成书在 R 还没那么普及、Python 数据栈还没成型的年代。 那时候「装个 R」是门槛,现在云端笔记本打开就能算。 但方法没变:直方图还是分箱计数,回归还是最小二乘。
环境会过时,方法不会。这也是本课一直在做的事:把方法跑一遍,工具能换就换。
六、动手 Demo:R 装好就能算:那几步在这里怎么等价
先原样贴出书里的安装步骤(本沙箱不执行)。 再把 R 最常用的三行(mean、sd、lm)在这里真算一遍,结果对照。
import statistics
X = [2, 4, 4, 4, 5, 5, 7, 9]
# R: mean(X)
print("mean %.2f" % (sum(X) / float(len(X))))
# R: sd(X)
print("sd %.3f" % statistics.stdev(X))
# R: lm(Y ~ X),这里让 Y = X,验证接口
YS = list(X)
mx = sum(X) / float(len(X))
my = sum(YS) / float(len(YS))
num = sum((x - mx) * (y - my) for x, y in zip(X, YS))
den = sum((x - mx) ** 2 for x in X)
k = num / den
b = my - k * mx
print("lm slope %.3f intercept %.3f" % (k, b))
print()
print("R 的 [1] 只是「输出第 1 个元素」,不是结果的一部分")
实跑输出:
--------------------------------------------------------------------
R 装好就能算:那几步在这里怎么等价
--------------------------------------------------------------------
① 书里怎么装 R
--------------------------------------------------------------------
[平台原样 · 本沙箱不执行]
| 1. 打开 cran.r-project.org
| 2. 选 Download R for Windows
| 3. 点 base -> Download R 4.x.x for Windows
| 4. 一路下一步,装完桌面出现 R 的图标
| 5. 打开 R,输入 1+1 回车,出现 [1] 2 就算成功
这台机器上没有 R:Rscript 不存在,装它也不是本课的任务。这一段只能原样贴。
② R 的舒服在哪
--------------------------------------------------------------------
三件事:向量化(c(1,2,3) 直接当一列算)、图形(plot 一行出图)、建模接口(lm 一行出模型)。
这三件事 Python 也都能做,只是写法不同:列表当向量、matplotlib 画图、numpy 拟合。
语言不同,动作一一对应。下面这张表就是对照。
③ 一张对照表
--------------------------------------------------------------------
| 要做的事 | R 里怎么写 | 这里怎么写 |
|---|---|---|
| 造一列数 | c(1, 2, 3) | [1, 2, 3] |
| 求平均 | mean(x) | sum(x) / len(x) |
| 标准偏差 | sd(x) | statistics.stdev(x) |
| 画直方图 | hist(x) | matplotlib 的 ax.hist |
| 拟合直线 | lm(y ~ x) | numpy 的 polyfit |
| 取残差 | resid(m) | 实际值减预测值 |
六行里没有一行是「R 独有的能力」。R 赢在生态和默认输出,不赢在算法。
④ 真跑一遍等价的那几行
--------------------------------------------------------------------
一列数:2, 4, 4, 4, 5, 5, 7, 9,共 8 个。
R 里 mean(x) 给 5.00;这里 sum/len 也是 5.00。
R 里 sd(x) 给 2.138;这里 statistics.stdev 给 2.138。
拿这列数拟合它自己(y = x):斜率 1.000,截距 -0.000。
自拟合当然是一条 45 度线——斜率 1、截距 0。它只证明接口通着,不证明任何事。
⑤ 什么时候值得专门去装 R
--------------------------------------------------------------------
要做正经的统计建模、要现成的检验与诊断图、要交一份同行看得懂的脚本——装 R 值。
只是偶尔算个平均、画个柱状图——不必。工具的重量要和任务的重量匹配。
学工具的顺序应该是:先知道要算什么,再挑工具。反过来会学一堆用不上的语法。
lm 那段用 y = x 自拟合,斜率必然是 1、截距必然是 0。它不证明任何事,只证明接口对得上。
真正做回归时,把 Y 换成实测值就行——公式一个字符都不用改。
30 秒实验
- R 的 sd() 和 Excel 的 STDEV() 是同一种口径吗?都是除 n−1 吗?
- 如果只有一行数据,sd() 会返回什么?为什么?
- 想一想:为什么「先学方法再学工具」比反过来省时间?
常见误区
- 以为 R 有独家算法:它用的最小二乘、直方图分箱,任何语言都一样。
- 把 [1] 当结果的一部分:那只是向量下标提示。
- 为一个小任务装一整套环境:工具的重量要和任务匹配。
- 装了不用:装完不练,一周后连包怎么装都忘了。
自测三问(点开对答案)
1. R 控制台里的 [1] 是什么意思? —— 表示「这是输出向量的第 1 个元素」。结果本身是 2,[1] 只是打印格式。 2. R 的三件舒服事是什么? —— 向量化运算、一行出图、一行建模(lm + summary)。 3. 这一课为什么还要讲装 R? —— 因为它出现在教材里,而且它是理解「统计工具长什么样」的入口。装不了就讲清等价做法。R 讲完,附录 C 讲另一件同类的事:Excel 的分析工具包为什么默认不出现。
- ☐ (本篇完,下一篇 C.1 在 Excel 里装上分析工具)