首页 > 解决方案 > R: hist() 产生奇怪的中断

问题描述

这里有一些数据:

m<-matrix(c(1,1 ,
2,3 ,
3,1 ,
4,1 ,
5,1 ,
6,2 ,
7,1 ,
8,3 ,
9,3 ,
10,1    ,
11,4    ,
12,1    ,
13,1    ,
14,1    ,
15,1    ,
16,2    ,
17,1    ,
18,2    ,
19,2    ,
20,1    ,
21,1    ,
22,1    ,
23,3    ,
24,2    ,
25,1    ,
26,1    ,
27,1    ,
28,1    ,
29,1    ,
30,2    ,
31,1    ,
32,3    ,
33,1    ,
34,1    ,
35,1    ,
36,1    ,
37,2    ,
38,1    ,
39,1    ,
40,4    ,
41,2    ,
42,1    ,
43,1    ,
44,5    ,
45,1    ,
46,1    ,
47,1    ,
48,1    ,
49,1    ,
50,5    ,
51,1    ,
52,1    ,
53,1    ,
54,1    ,
55,1    ,
56,2    ,
57,1    ,
58,1    ,
59,1    ,
60,1    ,
61,1    ,
62,1    ,
63,1    ,
64,1    ,
65,1    ,
66,1    ,
67,1    ,
68,1    ,
69,1    ,
70,1    ,
71,2    ,
72,1    ,
73,1    ,
74,1    ,
75,1    ,
76,3    ,
77,4    ,
78,1    ,
79,3    ,
80,1    ,
81,1    ,
82,1    ,
83,1    ,
84,4    ,
85,1    ,
86,1    ,
87,3    ,
88,1    ,
89,1    ,
90,1    ,
91,1    ,
92,2    ,
93,2    ,
94,1    ,
95,1    ,
96,2    ,
97,1    ,
98,3    ,
99,5    ,
100,1   ,
101,1   ,
102,2   ,
103,1   ,
104,2   ,
105,1   ,
106,4   ,
107,1   ,
108,3   ,
109,1   ,
110,1   ,
111,2   ,
112,3   ,
113,2   ,
114,2   ,
115,3   ,
116,1   ,
117,2   ,
118,1   ,
119,1   ,
120,2   ,
121,1   ,
122,3   ,
123,1   ,
124,1   ,
125,3   ,
126,2   ,
127,1   ,
128,2   ,
129,2   ,
130,1   ,
131,1   ,
132,1   ,
133,1   ,
134,2   ,
135,1   ,
136,1   ,
137,2   ,
138,2   ,
139,1   ,
140,2   ,
141,5   ,
142,1   ,
143,2   ,
144,1   ,
145,1   ,
146,3   ,
147,1   ,
148,1   ,
149,1   ,
150,2   ,
151,2   ,
152,2   ,
153,1   ,
154,1   ,
155,3   ,
156,1   ,
157,1   ,
158,1   ,
159,4   ,
160,1   ,
161,4   ,
162,1   ,
163,3   ,
164,3   ,
165,2   ,
166,4   ,
167,1   ,
168,1   ,
169,2   ,
170,3   ,
171,2   ,
172,1   ,
173,2   ,
174,1   ,
175,1   ,
176,1   ,
177,2   ,
178,1   ,
179,1   ,
180,1   ,
181,1   ,
182,1   ,
183,3   ,
184,1   ,
185,1   ,
186,2   ,
187,2   ,
188,2   ,
189,1   ,
190,1   ,
191,1   ,
192,1   ,
193,1   ,
194,3   ,
195,2   ,
196,3   ,
197,1   ,
198,1   ,
199,3   ,
200,2   ,
201,1   ,
202,4   ,
203,1   ,
204,1   ,
205,2   ,
206,1   ,
207,4   ,
208,3   ,
209,1   ,
210,3   ,
211,1   ,
212,3   ,
213,1   ,
214,1   ,
215,1   ,
216,2   ,
217,7   ,
218,1   ,
219,1   ,
220,1   ,
221,1   ,
222,1   ,
223,2   ,
224,1   ,
225,1   ,
226,1   ,
227,2   ,
228,1   ,
229,1   ,
230,1   ,
231,1   ,
232,1   ,
233,4   ,
234,1   ,
235,1   ,
236,1   ,
237,1   ,
238,1   ,
239,1   ,
240,1   ,
241,1   ,
242,1   ,
243,1   ,
244,2   ,
245,1   ,
246,1   ,
247,1   ,
248,1   ,
249,1   ,
250,1   ,
251,1   ,
252,1   ,
253,3   ,
254,1   ,
255,3   ,
256,2   ,
257,1   ,
258,1   ,
259,3   ,
260,1   ,
261,1   ,
262,1   ,
263,1   ,
264,1   ,
265,2   ,
266,1   ,
267,1   ,
268,4   ,
269,1   ,
270,2   ,
271,1   ,
272,1   ,
273,1   ,
274,1   ,
275,2   ,
276,2   ,
277,1   ,
278,5   ,
279,2   ,
280,1   ,
281,1   ,
282,1   ,
283,1   ,
284,1   ,
285,1   ,
286,1   ,
287,1   ,
288,5   ,
289,1   ,
290,2   ,
291,1   ,
292,1   ,
293,2   ,
294,1   ,
295,2   ,
296,1   ,
297,3   ,
298,1   ,
299,1   ,
300,2   ,
301,1   ,
302,2   ,
303,2   ,
304,6   ,
305,2   ,
306,1   ,
307,4   ,
308,2   ,
309,1   ,
310,3   ,
311,2   ,
312,1   ,
313,3   ,
314,1   ,
315,1   ,
316,1   ,
317,1   ,
318,1   ,
319,2   ,
320,6   ,
321,3   ,
322,2   ,
323,1   ,
324,5   ,
325,1   ,
326,1   ,
327,2   ,
328,1   ,
329,1   ,
330,1   ,
331,1   ,
332,1   ,
333,1   ,
334,4   ,
335,1   ,
336,1   ,
337,1   ,
338,1   ,
339,2   ,
340,2   ,
341,1   ,
342,1   ,
343,1   ,
344,5   ,
345,1   ,
346,3   ,
347,1   ,
348,1   ,
349,1   ,
350,2
),350,2, byrow=T)

我想生成这些数据的直方图。当我这样做时:

hist(m[,2])

它会生成一个直方图,其中包含以下计数:

$counts
 [1] 224  67   0  34   0  14   0   8   0   2   0   1

它每 0.5 次休息一次,我不明白为什么。如果我只是手动将中断更改为 c(1:7),它将不再产生 0,而是这样:

$counts
[1] 291  34  14   8   2   1

这是课堂作业,我们需要从直方图中提取频率。我们的老师给了我们需要得到的结果,所以我知道频率需要与第一个$count索引中的相同,(224、67、34...)但没有零。

为什么hist()调用会产生这 0.5 个中断?第一个频率似乎是 1 和 1.5 的计数,但这没有意义,因为我的矩阵中只有整数。

提前致谢!

标签: rcounthistogramfrequency

解决方案


直方图适用于连续随机变量。他们估计了潜在的密度分布。相反,您会看到离散值。R 不知道这一点,因为它们看起来就像数字。hist因此,选择默认中断的所有逻辑都假设您有连续的观察。更合适的图可能是条形图

barplot(table(m[,2]))

设置自己的休息时要小心,但默认情况下不包括较低的值。所以你会使用其中之一

hist(m[,2], breaks=0:7)
hist(m[,2], breaks=1:7, include.lowest = TRUE, right = FALSE)

获得相同的计数。但这实际上只是直方图不是计算离散值的正确工具这一事实的结果。table(m[,2])是获得计数的更直接的方法。


推荐阅读