Sunday, December 15, 2013

Computational Science in Statistics

Computational science is concerned with constructing mathematical models and quantitative analysis techniques and using computers to analyze and solve scientific problems. In practical use, it is typically the application of computer simulation and other forms of computation from numerical analysis and theoretical computer science to problems in various scientific disciplines.

What are the application of computer science in statistics?

1. Data management software like SAS ans R provides various methods to manage data and show data in more visual ways. In practice, computer can produce more precise tables, listings and graphics. For example, it is hard to imagine statistician makes contour plot and response surface plot by hand. 

2. Computational science offers the most efficient way to establish statistical model. I used to establish ANOVA model and regression linear model with four parameters or less by hand. But without the support of computational science, it is almost impossible to apply this method to real data with more than ten parameters in the model.

3. I think the most powerful tool computational science provides statisticians is the application of computer simulation. Without simulation, statistics means nothing. Simulation is a good way to estimate the possible result and cost before a real experiment. Sometimes we want to save resource. sometimes it is just impossible to implement the experiment in real word. For example, in order to analyze patient responses to a drug, you have to estimate sample size and sometimes for very rare disease you can only get data from simulation.

Overall, I believe computational science is the reason why statistics and mathematics are so popular in various fields.






Monday, December 9, 2013

Computer Graphics - Line Drawing Algorithms


Computer graphics are graphics created using computers and the representation of image data by a computer specifically with help from specialized graphic hardware and software. Here I will introduce the algorithms for Line drawing.

Line drawing is fundamental to computer graphics. We must have fast and efficient line drawing functions.

Given only the two end points, how to computer the intermediate pixels, so that the set of pixels closely approximate the ideal line?


Incremental Algorithms
  • Compute one point based on the previous point.
     (1)Next pixel on next column when slop is small
     (2)Next pixel on next row when slop is large
   



  •  Digital differential analyzer algorithm  
      The line function is y=mx+c.
      Assumption: Slope is less than 1.

      Given a point (X, Y)  on a line,  the next point is given by (X+1,Y+m).
  •  Midpoint algorithm
      The line function is y=mx+c.
      Assumption: Slope is less than 1.
      Given a point (X, Y)  on a line,  the midpoint is given by (X+1,Y+m/2).           (1) If the midpoint is below the line, then the next pixel is (X+1,X+C).
      (2) if the midpoint is above the line, then the next pixel is (X+1,Y).


When slope is larger than 1, we can develop similar algorithms.








Monday, December 2, 2013

How to Protect your Computer Systems and Computer Networkings

We should first learn about what kind of security threats exist and then find a way to reduce your risk. 
  • Malicious Software - A program designed to infiltrate or damage a computer
  • Categories of Malicious Software
      - Computer Viruses
      - Worms
      - Macro Viruses 
      - Spyware

Here are some general tips against these forms of Malicious Software.
  1. Use an anti-virus program and anti- spyware program and scan your computer regularly
  2. Update your operating system and key software on a regular basis
  3. Get a firewall(and turn it on/configure the security settings
  4. Avoid leaving your computer on all the time
  5. Be cautious of all email attachment and downloading software from unfamiliar websites
  6. Check the publisher information of the new software and what processes are running
  7. Reverse Browser hijacking
  8. Saving previously entered information carefully
  9. Not provide too much personal information in the social networking sites such as Facebook, MySpace, Twitter etc.
  10. Pay attention to what other people post about you

The bad guys constantly develop new ways to attack your computer, it is necessary to know how to protect your computer before any big loss occurs.

Monday, November 25, 2013

Artificial Intelligence-the most important technology of future


What is artificial intelligence?
Artificial intelligence is the science and engineering of making intelligent machines, especially intelligent computer programs. It is related to the similar task of using computers to understand human intelligence, but AI does not have to confine itself to methods that are biologically observable.

What is intelligence?
Intelligence is the computational part of the ability to achieve goals in the world. Varying kinds and degrees of intelligence occur in people, many animals and some machines.

While scientists have yet to realize the full potential of artificial intelligence, this technology will likely have far-reaching effects on human life in the years to come. The field of artificial intelligence promises to give machines the ability to think analytically, using concepts and advances in computer science, robotics and mathematics. Here are some of the surprising ways in which artificial intelligence impacts your life today and in the future.




  • Taming the Weather  Scientists may be able to predict the weather better by using artificial intelligence software, which can sift through complex data and spot patterns missed by the human eye. 
  • Tackling Dangerous Tasks   Artificial intelligence may also allow machines to perform tasks too dangerous for humans, such as mining or firefighting.
  • Driverless Transport   Artificial intelligence not only takes the responsibility away from the driver, but also eliminates the danger of distracted driving and boasts a reaction time much faster than that of any human.
  • Protect Your Finances  Artificial intelligence software may soon be able to protect consumers from fraud by spotting changes in spending or credit card use.
Sources:


Sunday, November 17, 2013

History of Computer Science- How it influences the development of statistics

Computer science is the scientific and practical approach to computation and its applications. The computer technology has changed our lives in every aspect. Here, I will talk about its role in statistics.

In the early development of statistics science, the theoretical advances in statistics were heavily dependent on mathematics and hand calculation. Because the limits of computational methods, many theories cannot be applied and proved.  Now the high speed of present day computers has allowed statisticians to demonstrate theoretical results as well as to obtain optimal properties of many procedures. With the easy availability of statistical software of various kinds, statistical procedures have been widely used in scientific research, government and industries. Recently developed statistical procedures such as those of data mining, jackknifing, bootstrap, pattern recognition and imagine analysis are essentially computational. These procedures have contributed significantly to the solution of many practical problems. Without the support of computer science, we cannot apply these methods easily.

From my own experience, simple modeling can be done by hand. But this will not work for modeling based on more than 4 variables and ten thousands of data sets. In the summer, I worked in a pharmaceutical company,  we need to simulate the clinical trial in order to estimate the smallest acceptable sample size, considering each patient is very expensive. Also, for some rare diseases, it is impossible to collect enough data to analyze. We usually do simulations based on current data by applying the bootstrap procedure.  

In my own experience, statistics is a very practical science. Sometimes we seek solutions from real data. But without the computer science, we can do little to deal with real problems.











Sunday, November 10, 2013

An introduction to File sharing

File sharing is the practice of making files available for other individuals to download. The most common and controversial method of file sharing is the use of peer-to-peer(P2P) software. This includes software such as Limewire, Morphens and BitTorrent.


What is peer-to-peer network?

A peer-to-peer network is a type of decentralized and distributed network architecture in which individual nodes in the network(called "peers") act as both suppliers and consumers of resources, in contrast to the centralized client-server model where client nodes request access to resources provided by central servers.



Advantages   

l No need for a network operating system
Does not need an expensive serer because individual workstations are used to access the files
No need for specialist staff such as network technicians because each user sets their own permissions as to which files they are willing to share
Much easier to set up than a client-server network 
If one computer fails it will not disrupt any other part of the network

Disadvantages

Because each computer might be being accessed by others it can show down the performance for the user
Files and folders cannot be centrally backed up
Files and resources are not centrally organized into a specific ‘shared area’. They are stored on individual computers and might be difficult to locate if the computer’s owner doesn't have a logical filing system
Ensuring that virus are not introduced to the network is the responsibility of each individual user
There is little or no security besides the permissions. Users often don’t need to log onto their workstations.

Overall, the advent of file-sharing technology has allowed consumers to copy music, books, video games and other works on an unprecedented scale at minimal cost.

Sources:



Sunday, November 3, 2013

Data Structure--a simple way to understand your data


In computer science, a data structure is a particular way of storing and organizing data so that it can be used efficiently. In order to understand data structure, we should be familiar with the following conception.
Data--the set of numbers, characters, which describe the external objects, and all information which can be input into the computer and processed by computer programs.
Data Element--the basic unit of data; also called node, acme or record. Each data element can be consist of several Data Items( the minimal unit of Data).
Data Object--the set of data elements with same attribute. It is the subset of Data and can be either finite or infinite.
Logical Structure 
1) Set
2) Linear list
3) Trees
4) Graphs
Storage Structure
       1) Sequential Storage
       2) Linked Storage
       3) Indexed Storage
       4) Hashing Storage
In my own experience, when you deal with a programming task, you should first figure out what kind of data structure should be used. In my last internship, I did some data management and quality control tasks in pharmaceuticals. For most of datasets, I needed to create different flag variables. These flag variables would be used to create subsets for special clinical analysis in the future. Also when I established a time-dependent cox regression model, the most difficult part was to create an acceptable data structure to the statistical software. Finally, to figure out the data structure of document systems was my first training course. So I believe for any programming job you have to understand what kind of data you are dealing with.

Source: