{"action":"created","issue":{"url":"https://api.github.com/repos/andrewpbray/oilabs/issues/8","labels_url":"https://api.github.com/repos/andrewpbray/oilabs/issues/8/labels{/name}","comments_url":"https://api.github.com/repos/andrewpbray/oilabs/issues/8/comments","events_url":"https://api.github.com/repos/andrewpbray/oilabs/issues/8/events","html_url":"https://github.com/andrewpbray/oilabs/issues/8","id":105706478,"number":8,"title":"make inference() go away","user":{"login":"beanumber","id":2774211,"avatar_url":"https://avatars.githubusercontent.com/u/2774211?v=3","gravatar_id":"","url":"https://api.github.com/users/beanumber","html_url":"https://github.com/beanumber","followers_url":"https://api.github.com/users/beanumber/followers","following_url":"https://api.github.com/users/beanumber/following{/other_user}","gists_url":"https://api.github.com/users/beanumber/gists{/gist_id}","starred_url":"https://api.github.com/users/beanumber/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/beanumber/subscriptions","organizations_url":"https://api.github.com/users/beanumber/orgs","repos_url":"https://api.github.com/users/beanumber/repos","events_url":"https://api.github.com/users/beanumber/events{/privacy}","received_events_url":"https://api.github.com/users/beanumber/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2015-09-09T23:58:19Z","updated_at":"2015-09-10T15:36:28Z","closed_at":null,"body":"See (https://github.com/beanumber/oiLabs-mosaic/issues/2)\r\n\r\nNo offense to whoever wrote this, but I think I hate `inference()`. It's the worst: an undocumented, magic, black box function. \r\n\r\nI'll offer two potential solutions:\r\n1. Document this function **thoroughly**\r\n2. Make it go away.\r\n\r\nI favor the latter. The question is does this foster or impede understanding of statistical concepts? I argue the latter. Is it realistic to suggest that if you want to do inference, you can just plug into a mysterious function? Or should we be reinforcing a conceptual understanding of inference by breaking the procedures into small steps? And isn't it important that a student specify **how** she is doing inference? \r\n\r\nI don't teach with this anyway. If you want to do a t-test, use `t.test()`. If you want to find a p-value in a normal sampling distribution, use `pnorm()`. If you want to find a p-value in a t-distribution, use `pt()`. If you want to find a p-value in a data-generated sampling distribution, use `mosaic::pdata()`. \r\n\r\nOn a slightly more esoteric level, I'm not sure that any of the functions in this package are really useful. I don't mind teaching students about functions in `dplyr` or `mosaic` because I know those packages are widely-used and likely to be well-supported in the future. But the function in this package never get used outside of these labs, so are they really necessary? \r\n\r\n/diatribe\r\n"},"comment":{"url":"https://api.github.com/repos/andrewpbray/oilabs/issues/comments/139283839","html_url":"https://github.com/andrewpbray/oilabs/issues/8#issuecomment-139283839","issue_url":"https://api.github.com/repos/andrewpbray/oilabs/issues/8","id":139283839,"user":{"login":"rudeboybert","id":4574203,"avatar_url":"https://avatars.githubusercontent.com/u/4574203?v=3","gravatar_id":"","url":"https://api.github.com/users/rudeboybert","html_url":"https://github.com/rudeboybert","followers_url":"https://api.github.com/users/rudeboybert/followers","following_url":"https://api.github.com/users/rudeboybert/following{/other_user}","gists_url":"https://api.github.com/users/rudeboybert/gists{/gist_id}","starred_url":"https://api.github.com/users/rudeboybert/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rudeboybert/subscriptions","organizations_url":"https://api.github.com/users/rudeboybert/orgs","repos_url":"https://api.github.com/users/rudeboybert/repos","events_url":"https://api.github.com/users/rudeboybert/events{/privacy}","received_events_url":"https://api.github.com/users/rudeboybert/received_events","type":"User","site_admin":false},"created_at":"2015-09-10T15:36:28Z","updated_at":"2015-09-10T15:36:28Z","body":"For sake of discussion, I'm going to narrow the scope to the 8 (means/proportions) x (one/two sample) x (HT/CI) combinations of normal distribution based inferential situations.  \r\n\r\nIn my ideal world, the use of the `inference()` function in labs would achieve two goals:\r\n\r\n* **Theoretical goal:** Stressing the unified nature/process/framework of inference.  i.e. the 8 combinations are really specific instances of the general two-step process Ben outlined. This helps reduce the tediousness of teaching them.\r\n* **Applied goal:** Giving students a good tool to use to conduct inference.\r\n\r\nMy views on how `inference()` fares:\r\n\r\n**Theoretical goal:** While the `inference()` function does have unified *syntax* across the 8 combinations, IMO it does not stress the unified *nature/process/framework*. Its use is akin to the use of the boxed commands in other software packages: set the dials (in our case 3 of them), enter the data, and get the output. Furthermore, the unified nature/process/framework (the sampling distribution and the test statistic) is conflated with the results.\r\n\r\n**Applied goal:** An anecdote: I had a student who wanted to use `inference()` for her own work. She didn't understand that `inference()` wasn't part of base R, didn't find it flexible, and found documentation sparse. While the latter two issues can be alleviated with work on our part, this anecdote is illustrative of why most students won't use `inference()` beyond this class; they'll either use the long-established built-in tools Ben listed or some other software. If this is the case, then why use `inference()` to achieve the applied goal? \r\n\r\nI feel these two goals are somewhat at odds with each other and having a two-birds-with-one-stone approach is difficult.  Furthermore, I think that trying to have a single function (with ample documentation) cover all bases will only increase its bloat and opaqueness. \r\n\r\nMy proposal: we modify `inference()` to favor the theoretical goal, have as unified looking outputs as possible across the 8 combinations, and make its use the bulk of labs.  Then as an appendix we articulate how you would conduct inference in practice using `t.test()`, `prop.test()`, `chisq.test()`, etc. Much like how I tell students that they are going to use normal tables and draw normal curves while taking the intro class, but will never do so in practice later. "}}